Skip to content

Commit 49e2c9e

Browse files
committed
[SPARK-53849][BUILD] Upgrade Netty to 4.2.6.Final
### What changes were proposed in this pull request? This PR aims to upgrade `Netty` to `4.2.6.Final` as a part of `Apache Spark 4.1.0` preparation. This PR follows the official community migration guide. - https://github.com/netty/netty/wiki/Netty-4.2-Migration-Guide ### Why are the changes needed? `Netty` community recommends `4.2`. > After a lot of work and many contributions from our OSS community we are thrilled to finally announce the release of netty 4.2.0.Final! Everyone using netty 4.1.x should be able to upgrade to 4.2.0.Final without any API breakage. The only new requirement is JDK8 or later (and JDK9+ for io_uring) and a more recent GLIBC version when using our native transports. - https://netty.io/news/2025/09/08/4-2-6.html - https://netty.io/news/2025/09/03/4-2-5.html - https://netty.io/news/2025/08/13/4-2-4.html - https://netty.io/news/2025/07/15/4-2-3.html - https://netty.io/news/2025/06/05/4-2-2.html - https://netty.io/news/2025/05/06/4-2-1.html - https://netty.io/news/2025/04/03/4-2-0.html ### Does this PR introduce _any_ user-facing change? No behavior change. ### How was this patch tested? Pass the CIs. ### Was this patch authored or co-authored using generative AI tooling? No. Closes #52552 from dongjoon-hyun/SPARK-53849. Authored-by: Dongjoon Hyun <[email protected]> Signed-off-by: Dongjoon Hyun <[email protected]>
1 parent 18f0463 commit 49e2c9e

File tree

5 files changed

+46
-23
lines changed

5 files changed

+46
-23
lines changed

common/network-common/src/test/java/org/apache/spark/network/client/TransportClientFactorySuite.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,12 @@ public void closeFactoryBeforeCreateClient() {
225225
}
226226

227227
@Test
228-
public void fastFailConnectionInTimeWindow() {
228+
public void fastFailConnectionInTimeWindow() throws IOException, InterruptedException {
229229
TransportClientFactory factory = context.createClientFactory();
230230
TransportServer server = context.createServer();
231231
int unreachablePort = server.getPort();
232232
server.close();
233+
Thread.sleep(1000);
233234
Assertions.assertThrows(IOException.class,
234235
() -> factory.createClient(TestUtils.getLocalHost(), unreachablePort, true));
235236
Assertions.assertThrows(IOException.class,
@@ -258,6 +259,7 @@ public void unlimitedConnectionAndCreationTimeouts() throws IOException, Interru
258259
TransportServer server = ctx.createServer();
259260
int unreachablePort = server.getPort();
260261
JavaUtils.closeQuietly(server);
262+
Thread.sleep(1000);
261263
IOException exception = Assertions.assertThrows(IOException.class,
262264
() -> factory.createClient(TestUtils.getLocalHost(), unreachablePort, true));
263265
assertNotEquals(exception.getCause(), null);

dev/deps/spark-deps-hadoop-3-hive-2.3

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -198,33 +198,48 @@ metrics-jmx/4.2.33//metrics-jmx-4.2.33.jar
198198
metrics-json/4.2.33//metrics-json-4.2.33.jar
199199
metrics-jvm/4.2.33//metrics-jvm-4.2.33.jar
200200
minlog/1.3.0//minlog-1.3.0.jar
201-
netty-all/4.1.127.Final//netty-all-4.1.127.Final.jar
202-
netty-buffer/4.1.127.Final//netty-buffer-4.1.127.Final.jar
203-
netty-codec-dns/4.1.127.Final//netty-codec-dns-4.1.127.Final.jar
204-
netty-codec-http/4.1.127.Final//netty-codec-http-4.1.127.Final.jar
205-
netty-codec-http2/4.1.127.Final//netty-codec-http2-4.1.127.Final.jar
206-
netty-codec-socks/4.1.127.Final//netty-codec-socks-4.1.127.Final.jar
207-
netty-codec/4.1.127.Final//netty-codec-4.1.127.Final.jar
208-
netty-common/4.1.127.Final//netty-common-4.1.127.Final.jar
209-
netty-handler-proxy/4.1.127.Final//netty-handler-proxy-4.1.127.Final.jar
210-
netty-handler/4.1.127.Final//netty-handler-4.1.127.Final.jar
211-
netty-resolver-dns/4.1.127.Final//netty-resolver-dns-4.1.127.Final.jar
212-
netty-resolver/4.1.127.Final//netty-resolver-4.1.127.Final.jar
201+
netty-all/4.2.6.Final//netty-all-4.2.6.Final.jar
202+
netty-buffer/4.2.6.Final//netty-buffer-4.2.6.Final.jar
203+
netty-codec-base/4.2.6.Final//netty-codec-base-4.2.6.Final.jar
204+
netty-codec-classes-quic/4.2.6.Final//netty-codec-classes-quic-4.2.6.Final.jar
205+
netty-codec-compression/4.2.6.Final//netty-codec-compression-4.2.6.Final.jar
206+
netty-codec-dns/4.2.6.Final//netty-codec-dns-4.2.6.Final.jar
207+
netty-codec-http/4.2.6.Final//netty-codec-http-4.2.6.Final.jar
208+
netty-codec-http2/4.2.6.Final//netty-codec-http2-4.2.6.Final.jar
209+
netty-codec-http3/4.2.6.Final//netty-codec-http3-4.2.6.Final.jar
210+
netty-codec-marshalling/4.2.6.Final//netty-codec-marshalling-4.2.6.Final.jar
211+
netty-codec-native-quic/4.2.6.Final/linux-aarch_64/netty-codec-native-quic-4.2.6.Final-linux-aarch_64.jar
212+
netty-codec-native-quic/4.2.6.Final/linux-x86_64/netty-codec-native-quic-4.2.6.Final-linux-x86_64.jar
213+
netty-codec-native-quic/4.2.6.Final/osx-aarch_64/netty-codec-native-quic-4.2.6.Final-osx-aarch_64.jar
214+
netty-codec-native-quic/4.2.6.Final/osx-x86_64/netty-codec-native-quic-4.2.6.Final-osx-x86_64.jar
215+
netty-codec-native-quic/4.2.6.Final/windows-x86_64/netty-codec-native-quic-4.2.6.Final-windows-x86_64.jar
216+
netty-codec-protobuf/4.2.6.Final//netty-codec-protobuf-4.2.6.Final.jar
217+
netty-codec-socks/4.2.6.Final//netty-codec-socks-4.2.6.Final.jar
218+
netty-codec/4.2.6.Final//netty-codec-4.2.6.Final.jar
219+
netty-common/4.2.6.Final//netty-common-4.2.6.Final.jar
220+
netty-handler-proxy/4.2.6.Final//netty-handler-proxy-4.2.6.Final.jar
221+
netty-handler/4.2.6.Final//netty-handler-4.2.6.Final.jar
222+
netty-resolver-dns/4.2.6.Final//netty-resolver-dns-4.2.6.Final.jar
223+
netty-resolver/4.2.6.Final//netty-resolver-4.2.6.Final.jar
213224
netty-tcnative-boringssl-static/2.0.74.Final/linux-aarch_64/netty-tcnative-boringssl-static-2.0.74.Final-linux-aarch_64.jar
214225
netty-tcnative-boringssl-static/2.0.74.Final/linux-x86_64/netty-tcnative-boringssl-static-2.0.74.Final-linux-x86_64.jar
215226
netty-tcnative-boringssl-static/2.0.74.Final/osx-aarch_64/netty-tcnative-boringssl-static-2.0.74.Final-osx-aarch_64.jar
216227
netty-tcnative-boringssl-static/2.0.74.Final/osx-x86_64/netty-tcnative-boringssl-static-2.0.74.Final-osx-x86_64.jar
217228
netty-tcnative-boringssl-static/2.0.74.Final/windows-x86_64/netty-tcnative-boringssl-static-2.0.74.Final-windows-x86_64.jar
218229
netty-tcnative-classes/2.0.74.Final//netty-tcnative-classes-2.0.74.Final.jar
219-
netty-transport-classes-epoll/4.1.127.Final//netty-transport-classes-epoll-4.1.127.Final.jar
220-
netty-transport-classes-kqueue/4.1.127.Final//netty-transport-classes-kqueue-4.1.127.Final.jar
221-
netty-transport-native-epoll/4.1.127.Final/linux-aarch_64/netty-transport-native-epoll-4.1.127.Final-linux-aarch_64.jar
222-
netty-transport-native-epoll/4.1.127.Final/linux-riscv64/netty-transport-native-epoll-4.1.127.Final-linux-riscv64.jar
223-
netty-transport-native-epoll/4.1.127.Final/linux-x86_64/netty-transport-native-epoll-4.1.127.Final-linux-x86_64.jar
224-
netty-transport-native-kqueue/4.1.127.Final/osx-aarch_64/netty-transport-native-kqueue-4.1.127.Final-osx-aarch_64.jar
225-
netty-transport-native-kqueue/4.1.127.Final/osx-x86_64/netty-transport-native-kqueue-4.1.127.Final-osx-x86_64.jar
226-
netty-transport-native-unix-common/4.1.127.Final//netty-transport-native-unix-common-4.1.127.Final.jar
227-
netty-transport/4.1.127.Final//netty-transport-4.1.127.Final.jar
230+
netty-transport-classes-epoll/4.2.6.Final//netty-transport-classes-epoll-4.2.6.Final.jar
231+
netty-transport-classes-io_uring/4.2.6.Final//netty-transport-classes-io_uring-4.2.6.Final.jar
232+
netty-transport-classes-kqueue/4.2.6.Final//netty-transport-classes-kqueue-4.2.6.Final.jar
233+
netty-transport-native-epoll/4.2.6.Final/linux-aarch_64/netty-transport-native-epoll-4.2.6.Final-linux-aarch_64.jar
234+
netty-transport-native-epoll/4.2.6.Final/linux-riscv64/netty-transport-native-epoll-4.2.6.Final-linux-riscv64.jar
235+
netty-transport-native-epoll/4.2.6.Final/linux-x86_64/netty-transport-native-epoll-4.2.6.Final-linux-x86_64.jar
236+
netty-transport-native-io_uring/4.2.6.Final/linux-aarch_64/netty-transport-native-io_uring-4.2.6.Final-linux-aarch_64.jar
237+
netty-transport-native-io_uring/4.2.6.Final/linux-riscv64/netty-transport-native-io_uring-4.2.6.Final-linux-riscv64.jar
238+
netty-transport-native-io_uring/4.2.6.Final/linux-x86_64/netty-transport-native-io_uring-4.2.6.Final-linux-x86_64.jar
239+
netty-transport-native-kqueue/4.2.6.Final/osx-aarch_64/netty-transport-native-kqueue-4.2.6.Final-osx-aarch_64.jar
240+
netty-transport-native-kqueue/4.2.6.Final/osx-x86_64/netty-transport-native-kqueue-4.2.6.Final-osx-x86_64.jar
241+
netty-transport-native-unix-common/4.2.6.Final//netty-transport-native-unix-common-4.2.6.Final.jar
242+
netty-transport/4.2.6.Final//netty-transport-4.2.6.Final.jar
228243
objenesis/3.4//objenesis-3.4.jar
229244
okhttp/3.12.12//okhttp-3.12.12.jar
230245
okio/1.17.6//okio-1.17.6.jar

launcher/src/main/java/org/apache/spark/launcher/JavaModuleOptions.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class JavaModuleOptions {
4545
"--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED",
4646
"-Djdk.reflect.useDirectMethodHandle=false",
4747
"-Dio.netty.tryReflectionSetAccessible=true",
48+
"-Dio.netty.allocator.type=pooled",
49+
"-Dio.netty.handler.ssl.defaultEndpointVerificationAlgorithm=NONE",
4850
"--enable-native-access=ALL-UNNAMED"};
4951

5052
/**

pom.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@
217217
<bouncycastle.version>1.82</bouncycastle.version>
218218
<tink.version>1.16.0</tink.version>
219219
<datasketches.version>6.2.0</datasketches.version>
220-
<netty.version>4.1.127.Final</netty.version>
220+
<netty.version>4.2.6.Final</netty.version>
221221
<netty-tcnative.version>2.0.74.Final</netty-tcnative.version>
222222
<icu4j.version>77.1</icu4j.version>
223223
<junit-jupiter.version>5.13.4</junit-jupiter.version>
@@ -337,6 +337,8 @@
337337
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
338338
-Djdk.reflect.useDirectMethodHandle=false
339339
-Dio.netty.tryReflectionSetAccessible=true
340+
-Dio.netty.allocator.type=pooled
341+
-Dio.netty.handler.ssl.defaultEndpointVerificationAlgorithm=NONE
340342
--enable-native-access=ALL-UNNAMED
341343
</extraJavaTestArgs>
342344
<mariadb.java.client.version>2.7.12</mariadb.java.client.version>

project/SparkBuild.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1704,6 +1704,8 @@ object TestSettings {
17041704
"--add-opens=java.base/sun.util.calendar=ALL-UNNAMED",
17051705
"-Djdk.reflect.useDirectMethodHandle=false",
17061706
"-Dio.netty.tryReflectionSetAccessible=true",
1707+
"-Dio.netty.allocator.type=pooled",
1708+
"-Dio.netty.handler.ssl.defaultEndpointVerificationAlgorithm=NONE",
17071709
"--enable-native-access=ALL-UNNAMED").mkString(" ")
17081710
s"-Xmx$heapSize -Xss4m -XX:MaxMetaspaceSize=$metaspaceSize -XX:ReservedCodeCacheSize=128m -Dfile.encoding=UTF-8 $extraTestJavaArgs"
17091711
.split(" ").toSeq

0 commit comments

Comments
 (0)