Releases: reactor/reactor-netty
v1.2.0
Reactor Netty 1.2.0 is part of 2024.0.0 Release Train.
New and Noteworthy
HTTP/3experimental support- Performance improvements
Unix Domain Socketssupport forNIOtransport (requires Java 17)Multi-releasejar support- Reference documentation is migrated to
Antora
What's Changed
⚠️ Update considerations and deprecations
- Remove deprecated
SslProvider$DefaultConfigurationSpecandSslProvider$DefaultConfigurationTypeby @violetagg in #3147 - Deprecate
SslContextSpec#sslContext(reactor.netty.tcp.SslProvider.ProtocolSslContextSpec)by @violetagg in #3160 - Always add
proxy.addresstag for the client metrics by @violetagg in #3230 - Resolve on demand the path from the request uri by @violetagg in #3359
✨ New features and improvements
- Dependency updates
- Depend on
Reactor Corev3.7.0by @chemicL in 9a5a672, see release notes - Depend on
Nettyv4.1.114.Finalby @violetagg in #3451 - Depend on
Netty QUIC Codecv0.0.68.Finalby @violetagg in #3442 - Depend on
Micrometerv1.14.0by @violetagg in #3508 - Depend on
Micrometer Tracingv1.14.0by @violetagg in #3508 - Depend on
Micrometer Doc Generatorv1.0.4by @violetagg in d4ec32e - Depend on
Context Propagationv1.1.0by @violetagg in #3164 - Depend on
Bravev6.0.3by @dependabot in #3172
- Depend on
HTTP/3server support- Make
ProtocolSslContextSpecgeneric by @violetagg in #3150 - Add
HTTP/3initial settings by @violetagg in #3152 - Add
HttpProtocol#HTTP3by @violetagg in #3161 - Initial
HTTP/3server support by @violetagg in #3176 - Annotate
HTTP/3server support as incubating by @violetagg in #3183 - Add
wiretapforHTTP/3frames by @violetagg in #3186 - Add
accesslogforHTTP/3server support by @violetagg in #3191 - Add
compressionforHTTP/3server support by @violetagg in #3192 - Add
metricsforHTTP/3server support by @violetagg in #3193 - Add dependency to
Netty HTTP3 Codecfor aggregated javadoc by @violetagg in #3197 - Add
SNI supportby @violetagg in #3496
- Make
HTTP/3client support- Add
HTTP/3client initial settings by @violetagg in #3311 - Add
HttpProtocol#HTTP3by @violetagg in #3312 - When there is no bind address, configure the default one by @violetagg in #3313
- Add bind support for
DefaultPooledConnectionProviderby @violetagg in #3314 - Add
Http3Poolby @violetagg in #3317 - Initial
HTTP/3client support by @violetagg in #3319 - Add
SNI supportby @violetagg in #3496 - Resolve the remote address by @violetagg in #3507
- Add
- Performance improvements
- Always check
idleTimeoutconfiguration before pipeline checks by @violetagg in #3117 - Always check
readTimeoutconfiguration before pipeline checks by @violetagg in #3118 - Cache the request info when collecting metrics by @violetagg in #3211 and #3231
- Immediately mark outbound as complete when sending
MonoorObjectby @violetagg in #3250 - Add possibility to delay the last flush operation by @violetagg in #3271, #3280 and #3282
- Cache the infomation whether the request is websocket by @violetagg in #3354
- Cache
Content-Lengthwhen it is about to send theFullHttpResponseby @violetagg in #3355 - Use
doFinallyin order to handlecancelanderrorsignals by @violetagg in #3356 - Initialise
ChannelOperations#shortIdon demand by @violetagg in #3357 - Simplify
HttpServerOperations#onInboundNextby @violetagg in #3375 - Simplify
HttpTrafficHandler#writeby @violetagg in #3376 - Separate handling for
EMPTY_LAST_CONTENTby @violetagg in #3385 - Reduce duplication by @violetagg in #3386
- Simplify response status code check by @violetagg in #3390
- Simplify
Http2StreamBridgeServerHandler#writeby @violetagg in #3391
- Always check
- Other improvements
- Add
Unix Domain Socketssupport onNIOtransport by @violetagg in #3494 - Make pending responses log messages consistent by @violetagg in #3239
- Allow using
SocketAddressproxies instead of justInetSocketAddressby @AlexProgrammerDE in #3243 - Make
MonoSend.MAX_SIZEconfigurable by system property by @VadimKirilchuk in #3276 - Add
Brotlisupport forHttpClientby @violetagg in #3331 HttpDecoderSpec#validateHeaders()specifies whether request/response headers are validated by @violetagg in #3370- Parse
X-Forwarded-Prefixrequest header by @chemicL in #3436 - Support
allowPartialChunksin theHttpDecoderSpecby @reta in #3453 - Add
multi-releasejar support by @violetagg in #3494
- Add
🐞 Bug fixes
- Do not add
IdleTimeoutHandlerwhile processing pipelined requests by @violetagg in #3124 - Always use remote socket address for the metrics by @violetagg in #3210
- Ensure
HttpServerMetricsRecorder#recordServerConnectionInactive/Closeis invoked for websockets by @violetagg in #3229 - Ensure
ConnectionProvidermetrics are disposed unconditionally when graceful shutdown by @violetagg in #3235 - Ensure
ByteBuf#releaseis invoked for already sentHTTP/2response by @violetagg in #3236 - When
HttpOperations#afterMarkSentHeadersthrows an error inHttpOperations#sendObject, ensure theByteBufis released just once by @violetagg in #3246 - Ensure
HttpClient#reactorNettyVersion()does not throwNullPointExceptionwhen loaded through-javaagentunderJDK 1.8by @KyoUK4n in #3266 - Fix
HTTP/2poolrecordPendingSuccess/FailureAndLatencynot recorded without timeout by @violetagg in #3252 - Close the connection when decoding exception happens by @violetagg in #3290
Http2Pool: when applyingacquireTimeout, check for current pendingBorrowersby @violetagg in #3300- When an explicit
EventLoopGroupis configured ensure only one connection pool is created by @violetagg in #3321 - Do not record an exception when the request information is not available by @violetagg in #3352
- Create on demand the response object for
Expect: 100-continueby @violetagg in #3362 - Always
decodein an event loop by @violetagg in #3369 - Ensure the buffer is not released twice by @violetagg in #3448
- When terminating detach the connection from request/response objects by @violetagg in #3459
- Ensure body is sent when
DELETEandTransfer-Encodingby @violetagg in #3481 - Delay sending the server preface when
SNIis configured by @violetagg in #3484 - Ensure
HttpInfos#versionreturns the correct protocol by @violetagg in #3487
📖 Documentation, Tests
- Clarify maximum websocket frame length configuration by @violetagg in #3116
- Validate zstd compression by @sullis in #3126
- Migrate reference documentation to
Antoraby @pderop in #3120, #3134, #3214, #3215, #3216 and by @violetagg in #3128, #3129, #3130, #3131, #3133, #3135, #3141 - Extend the documentation for the shared (default)
ConnectionProviderandEvent Loop Groupby @violetagg in #3281 - Polish javadoc for
HttpClient#compressby @izeye in #3349 - Update sources references in the reference documentation by @violetagg in #3429
- Fix typo in javadoc for
allowPartialChunkssetting by @andrross in #3471
Full Changelog: v1.1.17...v1.2.0
v1.1.24
Reactor Netty 1.1.24 is part of 2023.0.12 Release Train.
What's Changed
🐞 Bug fixes
- When terminating detach the connection from request/response objects by @violetagg in #3459
- Ensure body is sent when
DELETEandTransfer-Encodingby @violetagg in #3481 - Delay sending the server preface when
SNIis configured by @violetagg in #3484 - Ensure
HttpInfos#versionreturns the correct protocol by @violetagg in #3487
📖 Documentation
New Contributors
Full Changelog: v1.1.23...v1.1.24
v1.2.0-RC1
Reactor Netty 1.2.0-RC1 is part of 2024.0.0-RC1 Release Train.
Reactor Netty 1.2.0-RC1 inherits all changes from the 1.1.x branch at the point this release was cut.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.7.0-RC11by @violetagg in 36d5c21, see release notes - Depend on
Nettyv4.1.114.Finalby @violetagg in #3451 - Depend on
Netty QUIC Codecv0.0.68.Finalby @violetagg in #3442 - Depend on
Micrometerv1.14.0-RC1by @violetagg in d4ec32e - Depend on
Micrometer Tracingv1.14.0-RC1by @violetagg in d4ec32e - Depend on
Micrometer Doc Generatorv1.0.4by @violetagg in d4ec32e - Parse
X-Forwarded-Prefixrequest header by @chemicL in #3436 - Support
allowPartialChunksin theHttpDecoderSpecby @reta in #3453
🐞 Bug fixes
- Ensure the buffer is not released twice by @violetagg in #3448
📖 Documentation
- Update sources references in the reference documentation by @violetagg in #3429
New Contributors
Full Changelog: v1.2.0-M5...v1.2.0-RC1
v1.1.23
Reactor Netty 1.1.23 is part of 2023.0.11 Release Train.
What's Changed
✨ New features and improvements
- Depend on
Nettyv4.1.114.Finalby @violetagg in #3451 - Depend on
Netty QUIC Codecv0.0.68.Finalby @violetagg in #3442 - Parse
X-Forwarded-Prefixrequest header by @chemicL in #3436 - Support
allowPartialChunksin theHttpDecoderSpecby @reta in #3453
🐞 Bug fixes
- Ensure the buffer is not released twice by @violetagg in #3448
📖 Documentation
- Update sources references in the reference documentation by @violetagg in #3429
New Contributors
Full Changelog: v1.1.22...v1.1.23
v1.2.0-M5
Reactor Netty 1.2.0-M5 is part of 2024.0.0-M5 Release Train.
Reactor Netty 1.2.0-M5 inherits all changes from the 1.0.x and 1.1.x branches at the point this release was cut.
What's Changed
⚠️ Update considerations and deprecations
- Resolve on demand the path from the request uri by @violetagg in #3359
✨ New features and improvements
- Depend on
Reactor Corev3.7.0-M5by @violetagg in 5d07245, see release notes - Depend on
Nettyv4.1.112.Finalby @violetagg in #3361 - Depend on
Netty QUIC Codecv0.0.66.Finalby @violetagg in #3383 - Cache the infomation whether the request is websocket by @violetagg in #3354
- Cache
Content-Lengthwhen it is about to send theFullHttpResponseby @violetagg in #3355 - Use
doFinallyin order to handlecancelanderrorsignals by @violetagg in #3356 - Initialise
ChannelOperations#shortIdon demand by @violetagg in #3357 HttpDecoderSpec#validateHeaders()specifies whether request/response headers are validated by @violetagg in #3370- Simplify
HttpServerOperations#onInboundNextby @violetagg in #3375 - Simplify
HttpTrafficHandler#writeby @violetagg in #3376 - Separate handling for
EMPTY_LAST_CONTENTby @violetagg in #3385 - Reduce duplication by @violetagg in #3386
- Simplify response status code check by @violetagg in #3390
- Simplify
Http2StreamBridgeServerHandler#writeby @violetagg in #3391
🐞 Bug fixes
- Do not record an exception when the request information is not available by @violetagg in #3352
- Create on demand the response object for
Expect: 100-continueby @violetagg in #3362 - Always
decodein an event loop by @violetagg in #3369
📖 Documentation
Full Changelog: v1.2.0-M4...v1.2.0-M5
v1.1.22
Reactor Netty 1.1.22 is part of 2022.0.22 and 2023.0.9 Release Train.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.5.20by @violetagg in 35b79b7, see release notes - Depend on
Nettyv4.1.112.Finalby @violetagg in #3361 - Depend on
Netty QUIC Codecv0.0.66.Finalby @violetagg in #3383 - Cache the infomation whether the request is websocket by @violetagg in #3354
- Cache
Content-Lengthwhen it is about to send theFullHttpResponseby @violetagg in #3355 - Use
doFinallyin order to handlecancelanderrorsignals by @violetagg in #3356 - Initialise
ChannelOperations#shortIdon demand by @violetagg in #3357 - Simplify
HttpServerOperations#onInboundNextby @violetagg in #3375 - Simplify
HttpTrafficHandler#writeby @violetagg in #3376 - Separate handling for
EMPTY_LAST_CONTENTby @violetagg in #3385 - Reduce duplication by @violetagg in #3386
- Simplify response status code check by @violetagg in #3390
- Simplify
Http2StreamBridgeServerHandler#writeby @violetagg in #3391
🐞 Bug fixes
- Do not record an exception when the request information is not available by @violetagg in #3352
- Create on demand the response object for
Expect: 100-continueby @violetagg in #3362 - Always
decodein an event loop by @violetagg in #3369
Full Changelog: v1.1.21...v1.1.22
v1.0.48
Reactor Netty 1.0.48 is part of 2020.0.47 Release Train.
This is the last release of 1.0.x, as 2020.0.x Release Train is going out of OSS support. For the next steps, check our support policy.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.4.41by @violetagg in e136dab, see release notes - Depend on
Nettyv4.1.112.Finalby @violetagg in #3361 - Depend on
Netty QUIC Codecv0.0.66.Finalby @violetagg in #3383
🐞 Bug fixes
- Create on demand the response object for
Expect: 100-continueby @violetagg in #3362 - Always
decodein an event loop by @violetagg in #3369
Full Changelog: v1.0.47...v1.0.48
v1.2.0-M4
Reactor Netty 1.2.0-M4 is part of 2024.0.0-M4 Release Train.
This milestone adds HTTP/3 client support.
Enablement of the HTTP/3 client support:
- a dependency to netty-incubator-codec-http3 is specified
- the HTTP protocol is configured as
HTTP3
The example below shows one simple configuration for the HttpClient:
public class Application {
public static void main(String[] args) throws Exception {
HttpClient client =
HttpClient.create()
.remoteAddress(() -> new InetSocketAddress("www.google.com", 443))
.protocol(HttpProtocol.HTTP3)
.secure()
.http3Settings(spec -> spec.idleTimeout(Duration.ofSeconds(5))
.maxData(10000000)
.maxStreamDataBidirectionalLocal(1000000));
Tuple2<String, HttpHeaders> response =
client.get()
.uri("/")
.responseSingle((res, bytes) -> bytes.asString()
.zipWith(Mono.just(res.responseHeaders())))
.block();
System.out.println("Used stream ID: " + response.getT2().get("x-http3-stream-id"));
System.out.println("Response: " + response.getT1());
}
}
Reactor Netty 1.2.0-M4 inherits all changes from the 1.0.x and 1.1.x branches at the point this release was cut.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.7.0-M4by @chemicL in 24d4fde, see release notes - Depend on
Nettyv4.1.111.Finalby @violetagg in #3293 - Depend on
Netty QUIC Codecv0.0.65.Finalby @violetagg in #3320 HTTP/3client support- Add
HTTP/3client initial settings by @violetagg in #3311 - Add
HttpProtocol#HTTP3by @violetagg in #3312 - When there is no bind address, configure the default one by @violetagg in #3313
- Add bind support for
DefaultPooledConnectionProviderby @violetagg in #3314 - Add
Http3Poolby @violetagg in #3317 - Initial
HTTP/3client support by @violetagg in #3319
- Add
- Add
Brotlisupport forHttpClientby @violetagg in #3331
🐞 Bug fixes
- Close the connection when decoding exception happens by @violetagg in #3290
Http2Pool: when applyingacquireTimeout, check for current pendingBorrowersby @violetagg in #3300- When an explicit
EventLoopGroupis configured ensure only one connection pool is created by @violetagg in #3321
Full Changelog: v1.2.0-M3...v1.2.0-M4
v1.1.21
Reactor Netty 1.1.21 is part of 2022.0.21 and 2023.0.8 Release Train.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.5.19by @chemicL in c9c6671, see release notes - Depend on
Nettyv4.1.111.Finalby @violetagg in #3293 - Depend on
Netty QUIC Codecv0.0.65.Finalby @violetagg in #3320
🐞 Bug fixes
- Close the connection when decoding exception happens by @violetagg in #3290
Http2Pool: when applyingacquireTimeout, check for current pendingBorrowersby @violetagg in #3300- When an explicit
EventLoopGroupis configured ensure only one connection pool is created by @violetagg in #3321
Full Changelog: v1.1.20...v1.1.21
v1.0.47
Reactor Netty 1.0.47 is part of 2020.0.46 Release Train.
What's Changed
✨ New features and improvements
- Depend on
Reactor Corev3.4.40by @chemicL in 7c0da79, see release notes - Depend on
Nettyv4.1.111.Finalby @violetagg in #3293 - Depend on
Netty QUIC Codecv0.0.65.Finalby @violetagg in #3320
🐞 Bug fixes
- Close the connection when decoding exception happens by @violetagg in #3290
- When an explicit
EventLoopGroupis configured ensure only one connection pool is created by @violetagg in #3321
Full Changelog: v1.0.46...v1.0.47