Skip to content

Commit fc2e98e

Browse files
authored
use synchronous H2 multiplexer accessor (#396)
* use synchronous H2 multiplexer accessor Motivation: The `ChannelPipeline.SynchronousOperations.configureHTTP2Pipeline(...)` method added to support synchronously setting up a pipeline to handle HTTP2 with the `StreamMultiplexer` embedded within the `NIOHTTP2Handler` erroneously retrieved the multiplexer via a `.wait()`. This is not permitted and will cause any code which executes it to deadlock. Modifications: The synchrounous operation now obtains the multiplexer via `handler.syncMultiplexer()` Result: The code should not deadlock. * update allocation counts
1 parent f509541 commit fc2e98e

File tree

6 files changed

+21
-21
lines changed

6 files changed

+21
-21
lines changed

Sources/NIOHTTP2/HTTP2PipelineHelpers.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,6 @@ extension ChannelPipeline.SynchronousOperations {
375375
try self.addHandler(handler, position: position)
376376

377377
// `multiplexer` will always be non-nil when we are initializing with an `inboundStreamInitializer`
378-
return try handler.multiplexer.wait()
378+
return try handler.syncMultiplexer()
379379
}
380380
}

docker/docker-compose.2004.56.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ services:
3333
- MAX_ALLOCS_ALLOWED_1k_requests_interleaved=41150
3434
- MAX_ALLOCS_ALLOWED_1k_requests_noninterleaved=40100
3535
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response=292050
36-
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=281050
36+
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=269050
3737
- MAX_ALLOCS_ALLOWED_client_server_request_response=261050
38-
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=256050
38+
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=244050
3939
- MAX_ALLOCS_ALLOWED_client_server_request_response_many=1206050
40-
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=901050
40+
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=889050
4141
- MAX_ALLOCS_ALLOWED_create_client_stream_channel=39050
4242
- MAX_ALLOCS_ALLOWED_create_client_stream_channel_inline=39050
4343
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form=200050
@@ -46,7 +46,7 @@ services:
4646
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form_trimming_whitespace_from_short_string=200050
4747
- MAX_ALLOCS_ALLOWED_hpack_decoding=5050
4848
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent=292850
49-
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=292150
49+
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=291550
5050

5151
shell:
5252
image: swift-nio-http2:20.04-5.6

docker/docker-compose.2204.57.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ services:
3333
- MAX_ALLOCS_ALLOWED_1k_requests_interleaved=41150
3434
- MAX_ALLOCS_ALLOWED_1k_requests_noninterleaved=40100
3535
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response=292050
36-
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=281050
36+
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=269050
3737
- MAX_ALLOCS_ALLOWED_client_server_request_response=261050
38-
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=256050
38+
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=244050
3939
- MAX_ALLOCS_ALLOWED_client_server_request_response_many=1206050
40-
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=901050
40+
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=889050
4141
- MAX_ALLOCS_ALLOWED_create_client_stream_channel=39050
4242
- MAX_ALLOCS_ALLOWED_create_client_stream_channel_inline=39050
4343
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form=200050
@@ -46,7 +46,7 @@ services:
4646
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form_trimming_whitespace_from_short_string=200050
4747
- MAX_ALLOCS_ALLOWED_hpack_decoding=5050
4848
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent=292850
49-
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=292150
49+
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=291550
5050

5151
shell:
5252
image: swift-nio-http2:22.04-5.7

docker/docker-compose.2204.58.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ services:
3333
- MAX_ALLOCS_ALLOWED_1k_requests_interleaved=41150
3434
- MAX_ALLOCS_ALLOWED_1k_requests_noninterleaved=40100
3535
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response=292050
36-
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=281050
36+
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=269050
3737
- MAX_ALLOCS_ALLOWED_client_server_request_response=261050
38-
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=256050
38+
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=244050
3939
- MAX_ALLOCS_ALLOWED_client_server_request_response_many=1206050
40-
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=901050
40+
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=889050
4141
- MAX_ALLOCS_ALLOWED_create_client_stream_channel=39050
4242
- MAX_ALLOCS_ALLOWED_create_client_stream_channel_inline=39050
4343
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form=200050
@@ -46,7 +46,7 @@ services:
4646
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form_trimming_whitespace_from_short_string=200050
4747
- MAX_ALLOCS_ALLOWED_hpack_decoding=5050
4848
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent=292850
49-
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=292150
49+
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=291550
5050
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
5151

5252
shell:

docker/docker-compose.2204.59.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ services:
3232
- MAX_ALLOCS_ALLOWED_1k_requests_interleaved=41150
3333
- MAX_ALLOCS_ALLOWED_1k_requests_noninterleaved=40100
3434
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response=292050
35-
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=281050
35+
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=269050
3636
- MAX_ALLOCS_ALLOWED_client_server_request_response=261050
37-
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=256050
37+
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=244050
3838
- MAX_ALLOCS_ALLOWED_client_server_request_response_many=1206050
39-
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=901050
39+
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=889050
4040
- MAX_ALLOCS_ALLOWED_create_client_stream_channel=39050
4141
- MAX_ALLOCS_ALLOWED_create_client_stream_channel_inline=39050
4242
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form=200050
@@ -45,7 +45,7 @@ services:
4545
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form_trimming_whitespace_from_short_string=200050
4646
- MAX_ALLOCS_ALLOWED_hpack_decoding=5050
4747
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent=292850
48-
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=292150
48+
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=291550
4949
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
5050

5151
shell:

docker/docker-compose.2204.main.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ services:
3232
- MAX_ALLOCS_ALLOWED_1k_requests_interleaved=41150
3333
- MAX_ALLOCS_ALLOWED_1k_requests_noninterleaved=40100
3434
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response=292050
35-
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=281050
35+
- MAX_ALLOCS_ALLOWED_client_server_h1_request_response_inline=269050
3636
- MAX_ALLOCS_ALLOWED_client_server_request_response=261050
37-
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=256050
37+
- MAX_ALLOCS_ALLOWED_client_server_request_response_inline=244050
3838
- MAX_ALLOCS_ALLOWED_client_server_request_response_many=1206050
39-
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=901050
39+
- MAX_ALLOCS_ALLOWED_client_server_request_response_many_inline=889050
4040
- MAX_ALLOCS_ALLOWED_create_client_stream_channel=39050
4141
- MAX_ALLOCS_ALLOWED_create_client_stream_channel_inline=39050
4242
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form=200050
@@ -45,7 +45,7 @@ services:
4545
- MAX_ALLOCS_ALLOWED_get_100000_headers_canonical_form_trimming_whitespace_from_short_string=200050
4646
- MAX_ALLOCS_ALLOWED_hpack_decoding=5050
4747
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent=292850
48-
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=292150
48+
- MAX_ALLOCS_ALLOWED_stream_teardown_100_concurrent_inline=291550
4949
- IMPORT_CHECK_ARG=--explicit-target-dependency-import-check error
5050

5151
shell:

0 commit comments

Comments
 (0)