Repository navigation
Upgrade Netty and Reactor versions - #50418
Alan Zimmer (alzimmermsft) merged 33 commits into
Conversation
|
Azure Pipelines: Successfully started running 2 pipeline(s). 34 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Most changes look good, but there's an issue with how the module-system loads native transports in both the Netty 4.2 changes the native transport class JARs (e.g. I had Copilot run some tests and it showed that the epoll/kqueue (Linux's and MacOS' connection monitoring mechanisms) class modules were discoverable with the previous transport and Netty 4.1. With the new stack, Reactor’s native-transport detection treats the missing classes as unavailable and falls back to NIO. Resolving only the class module still leaves the bundled native library inaccessible.
I haven't spent too long looking into how to preserve runtime discovery/activation of both the class and platform-native modules, but it seems For context, the tests ran on Windows/JDK 25 and just checked module resolution and resource visibility, they didn’t actually execute native Linux/macOS I/O. |
Add test-only JPMS reads for SDK and Cosmos Encryption tests. Align Spark Netty dependencies and Spring test transport/Reactive dependency resolution without changing production module exports. Add offline transport regression tests and update contributor documentation and release notes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: Successfully started running 5 pipeline(s). 31 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
🟡 Changes recommended
The Spring starter resolves a mixed Netty patch stack, version validation is incomplete, and several release metadata entries are stale.
11 open findings
Netty dependencies use inconsistent versions · New Component manifest has stale Netty version · New Version validator omits direct Netty modules · New Release note reports incorrect Netty version · New Avoid disabling SpotBugs for Mockito stubbing · New Release note misstates the Netty upgrade · New Compatibility guidance lists incorrect Netty version · New Changelog lists stale Netty version · New Release note omits Netty and Jackson upgrades · New Changelog lists incorrect Netty version · New Changelog lists incorrect Netty version · New
What changed in this PR
Upgrades the repository’s Netty/Reactor stack and adapts transports, JPMS configuration, tests, and documentation for Netty 4.2.
Changes:
- Upgrades Netty to 4.2.19, Reactor Netty to 1.3.7, and Reactor to 3.8.7.
- Migrates event-loop, allocator, TLS, compression, and native-transport handling.
- Updates dependency metadata, compatibility tests, and migration guidance.
| File | Description |
|---|---|
sdk/webpubsub/azure-messaging-webpubsub-client/src/main/java/module-info.java |
Adds compression module. |
sdk/webpubsub/azure-messaging-webpubsub-client/src/main/java/com/azure/messaging/webpubsub/client/implementation/websocket/WebSocketSessionNettyImpl.java |
Migrates WebSocket Netty setup. |
sdk/webpubsub/azure-messaging-webpubsub-client/pom.xml |
Updates Netty/core dependencies. |
sdk/webpubsub/azure-messaging-webpubsub-client/CHANGELOG.md |
Documents migration. |
sdk/webpubsub/azure-messaging-webpubsub-chat/pom.xml |
Updates transport dependencies. |
sdk/voicelive/azure-ai-voicelive/pom.xml |
Updates Reactor Test. |
sdk/spring/spring-cloud-azure-starter-servicebus-jms/pom.xml |
Changes Netty buffer version. |
sdk/spring/spring-cloud-azure-autoconfigure/pom.xml |
Aligns Reactor and test transport. |
sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md |
Documents compatibility work. |
sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientTest.java |
Removes Netty status dependency. |
sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClientTest.java |
Removes Netty status dependency. |
sdk/openai/azure-ai-openai-realtime/src/main/java/module-info.java |
Adds compression module. |
sdk/openai/azure-ai-openai-realtime/src/main/java/com/azure/ai/openai/realtime/implementation/websocket/WebSocketSessionNettyImpl.java |
Migrates event loops. |
sdk/openai/azure-ai-openai-realtime/pom.xml |
Updates Netty/core dependencies. |
sdk/openai/azure-ai-openai-realtime/CHANGELOG.md |
Documents migration. |
sdk/monitor/azure-monitor-opentelemetry-autoconfigure/pom.xml |
Adds module read edge. |
sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/DataFeedClientTest.java |
Removes Netty status dependency. |
sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/DataFeedAsyncClientTest.java |
Removes Netty status dependency. |
sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientTest.java |
Removes Netty status dependency. |
sdk/identity/azure-identity/src/test/java/com/azure/identity/WorkloadIdentityCredentialIdentityBindingTest.java |
Migrates test event loops. |
sdk/identity/azure-identity/pom.xml |
Updates core transport and module reads. |
sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingClientTest.java |
Removes Netty status dependency. |
sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/FormTrainingAsyncClientTest.java |
Removes Netty status dependency. |
sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/documentanalysis/administration/DocumentModelAdministrationAsyncClientTest.java |
Removes Netty status dependency. |
sdk/formrecognizer/azure-ai-formrecognizer/src/test/java/com/azure/ai/formrecognizer/documentanalysis/administration/DocumentModelAdminClientTest.java |
Removes Netty status dependency. |
sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml |
Updates Reactor Core. |
sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml |
Updates Reactor Test. |
sdk/documentintelligence/azure-ai-documentintelligence/src/test/java/com/azure/ai/documentintelligence/DocumentModelAdministrationClientTest.java |
Removes Netty status dependency. |
sdk/documentintelligence/azure-ai-documentintelligence/src/test/java/com/azure/ai/documentintelligence/DocumentModelAdministrationAsyncClientTest.java |
Removes Netty status dependency. |
sdk/cosmos/cspell.yml |
Adds JPMS term. |
sdk/cosmos/azure-cosmos/src/main/java/module-info.java |
Adds compression module. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/http/ReactorNettyClient.java |
Preserves pooled allocator behavior. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/guava25/hash/Striped64.java |
Removes obsolete import. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdServiceEndpoint.java |
Uses renamed channel option. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdLoopNIO.java |
Migrates NIO loops. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdLoopEpoll.java |
Migrates epoll loops. |
sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/Configs.java |
Preserves TLS validation settings. |
sdk/cosmos/azure-cosmos/README.md |
Adds JPMS native-transport guidance. |
sdk/cosmos/azure-cosmos/pom.xml |
Updates core transport. |
sdk/cosmos/azure-cosmos/CHANGELOG.md |
Documents dependency migration. |
sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/rx/proxy/HttpProxyServer.java |
Migrates proxy event loops. |
sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/http/ReactorNettyHttpClientTest.java |
Tests allocator selection. |
sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/TcpServerMock/TcpServer.java |
Migrates test event loops. |
sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/directconnectivity/rntbd/RntbdLoopTests.java |
Adds transport registration tests. |
sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/implementation/ConfigsTests.java |
Tests TLS settings. |
sdk/cosmos/azure-cosmos-tests/pom.xml |
Updates Reactor Test. |
sdk/cosmos/azure-cosmos-spark-account-data-resolver-sample/pom.xml |
Updates Reactor Test. |
sdk/cosmos/azure-cosmos-spark_4-1_2-13/pom.xml |
Excludes Spark Netty dependencies. |
sdk/cosmos/azure-cosmos-spark_4-0_2-13/pom.xml |
Excludes Spark Netty dependencies. |
sdk/cosmos/azure-cosmos-spark_3/src/test/scala/com/azure/cosmos/spark/NettyCompatibilitySpec.scala |
Adds Netty compatibility tests. |
sdk/cosmos/azure-cosmos-spark_3/pom.xml |
Updates transport dependencies. |
sdk/cosmos/azure-cosmos-spark_3-5/pom.xml |
Excludes native transports. |
sdk/cosmos/azure-cosmos-spark_3-4_2-12/pom.xml |
Excludes native transports. |
sdk/cosmos/azure-cosmos-encryption/pom.xml |
Updates module reads and Reactor. |
sdk/core/azure-core/src/test/java/com/azure/core/http/ProxyOptionsTests.java |
Isolates proxy tests from environment. |
sdk/core/azure-core/pom.xml |
Updates Reactor dependencies. |
sdk/core/azure-core/CHANGELOG.md |
Documents Reactor upgrade. |
sdk/core/azure-core-version-tests/pom.xml |
Updates Reactor Core. |
sdk/core/azure-core-tracing-opentelemetry/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-test/README.md |
Removes trailing whitespace. |
sdk/core/azure-core-test/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-test/CHANGELOG.md |
Documents dependency upgrade. |
sdk/core/azure-core-serializer-json-jackson/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-serializer-json-gson/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-serializer-avro-apache/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-perf/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-management/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxHttpClientBuilderTests.java |
Isolates proxy tests. |
sdk/core/azure-core-http-vertx/README.md |
Documents Netty 4.1 constraint. |
sdk/core/azure-core-http-vertx/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-http-okhttp/src/test/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClientBuilderTests.java |
Isolates proxy tests. |
sdk/core/azure-core-http-okhttp/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyNativeTransportModulesTests.java |
Tests native module resolution. |
sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilderTests.java |
Tests allocator and event loops. |
sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/implementation/NettyUtilityTests.java |
Tests split Netty artifacts. |
sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/implementation/ByteBufWriterSubscriberTests.java |
Tests heap-buffer writes. |
sdk/core/azure-core-http-netty/src/samples/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilderJavaDocCodeSnippets.java |
Updates event-loop samples. |
sdk/core/azure-core-http-netty/src/main/resources/META-INF/native-image/com.azure/azure-core-http-netty/native-image.properties |
Updates native-image initialization. |
sdk/core/azure-core-http-netty/src/main/java/module-info.java |
Adds split Netty modules. |
sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClientBuilder.java |
Preserves allocator behavior. |
sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyUtility.java |
Updates version validation. |
sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/NettyAsyncHttpResponse.java |
Uses heap buffers for file writes. |
sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/implementation/ByteBufWriteSubscriber.java |
Adds bounded heap-buffer mode. |
sdk/core/azure-core-http-netty/README.md |
Adds migration guidance. |
sdk/core/azure-core-http-netty/pom.xml |
Upgrades Netty/Reactor stack. |
sdk/core/azure-core-http-netty/CHANGELOG.md |
Documents transport upgrade. |
sdk/core/azure-core-http-netty/cgmanifest.json |
Updates component inventory. |
sdk/core/azure-core-http-jdk-httpclient/src/test/java/com/azure/core/http/jdk/httpclient/JdkHttpClientBuilderTests.java |
Isolates proxy tests. |
sdk/core/azure-core-http-jdk-httpclient/pom.xml |
Updates Reactor Test. |
sdk/core/azure-core-experimental/pom.xml |
Updates Reactor Test. |
sdk/confidentialledger/azure-security-confidentialledger/pom.xml |
Adds module read edges. |
sdk/communication/azure-communication-jobrouter/pom.xml |
Removes redundant enforcer config. |
sdk/communication/azure-communication-common/pom.xml |
Removes redundant Reactor dependency. |
sdk/clientcore/http-okhttp3/src/test/java/io/clientcore/http/okhttp3/OkHttpHttpClientBuilderTests.java |
Isolates proxy tests. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/NettyHttpClientBuilderTests.java |
Tests Netty 4.2 builder behavior. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/NettyHttp2HttpClientTests.java |
Tests HTTP/2 decompression. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/implementation/Netty4UtilityTests.java |
Tests TLS hostname verification. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/implementation/Netty4PipelineCleanupHandlerTests.java |
Adjusts event-loop mock. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/implementation/Netty4Http11ChannelBinaryDataTests.java |
Adjusts pipeline spying. |
sdk/clientcore/http-netty4/src/test/java/io/clientcore/http/netty4/implementation/Netty4ConnectionPoolTests.java |
Migrates test event loops. |
sdk/clientcore/http-netty4/src/main/java/module-info.java |
Adds compression module. |
sdk/clientcore/http-netty4/src/main/java/io/clientcore/http/netty4/NettyHttpClientBuilder.java |
Migrates native transport selection. |
sdk/clientcore/http-netty4/src/main/java/io/clientcore/http/netty4/implementation/Netty4Utility.java |
Updates version validation. |
sdk/clientcore/http-netty4/spotbugs-exclude.xml |
Adds SpotBugs suppression. |
sdk/clientcore/http-netty4/README.md |
Adds native-module guidance. |
sdk/clientcore/http-netty4/pom.xml |
Upgrades Netty dependencies. |
sdk/clientcore/http-netty4/CHANGELOG.md |
Documents Netty upgrade. |
sdk/clientcore/cspell.yml |
Adds JPMS term. |
sdk/clientcore/core/src/test/java/io/clientcore/core/http/models/ProxyOptionsTests.java |
Isolates proxy tests. |
sdk/clientcore/core/src/test/java/io/clientcore/core/http/client/JdkHttpClientBuilderIT.java |
Isolates proxy integration test. |
sdk/attestation/azure-security-attestation/pom.xml |
Adds Bouncy Castle module read. |
sdk/ai/azure-ai-agents/src/main/java/module-info.java |
Adds compression module. |
sdk/ai/azure-ai-agents/pom.xml |
Upgrades transport dependencies. |
eng/versioning/version_client.txt |
Registers unreleased core versions. |
eng/versioning/supported_external_dependency_versions.json |
Updates supported Reactor baseline. |
eng/versioning/external_dependencies.txt |
Updates dependency catalog. |
eng/pipelines/templates/jobs/ci.yml |
Extends analysis timeout. |
docs/contributor/building.md |
Documents test-only module reads. |
common/perf-test-core/pom.xml |
Updates Reactor enforcement. |
🧠 Review effort: Balanced
There was a problem hiding this comment.
As FYI, I'll follow up on this setting - https://netty.io/4.2/api/io/netty/channel/SingleThreadIoEventLoop.html#setIoRatio(int) and set it to 50 in further benchmarks in the spirit of retaining Netty 4.1 defaults ;)



Description
Upgrade Netty to 4.2 and match Reactor Netty (and therefore Reactor) versions accordingly.
All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines