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