From bd95b3c433dc7381c0c5478361d87ac5924f4974 Mon Sep 17 00:00:00 2001 From: Sergei Ustimenko Date: Sun, 14 Dec 2025 23:13:49 +0100 Subject: [PATCH 1/2] Fix Netty deprecation warnings in transport-netty4 module Signed-off-by: Sergei Ustimenko --- .../http/netty4/Netty4HttpServerTransport.java | 12 +++++++++--- .../org/opensearch/transport/NettyAllocator.java | 2 -- .../org/opensearch/transport/SharedGroupFactory.java | 12 ++++++++---- .../opensearch/transport/netty4/Netty4Transport.java | 6 +++--- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java index 7e2f3496e5c01..baaeb5f41bdc7 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java @@ -139,6 +139,12 @@ public class Netty4HttpServerTransport extends AbstractHttpServerTransport { */ private static final ByteSizeValue MTU = new ByteSizeValue(Long.parseLong(System.getProperty("opensearch.net.mtu", "1500"))); + /** + * The size of the decompressor buffer for the http content + * that is going to be used with the {@link #createDecompressor()}. + */ + private static final int UNLIMITED_DECOMPRESSOR_BUFFER = 0; + private static final String SETTING_KEY_HTTP_NETTY_MAX_COMPOSITE_BUFFER_COMPONENTS = "http.netty.max_composite_buffer_components"; public static Setting SETTING_HTTP_NETTY_MAX_COMPOSITE_BUFFER_COMPONENTS = new Setting<>( @@ -310,8 +316,8 @@ protected void doStart() { serverBootstrap.childOption(ChannelOption.SO_RCVBUF, Math.toIntExact(tcpReceiveBufferSize.getBytes())); } - serverBootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, recvByteBufAllocator); - serverBootstrap.childOption(ChannelOption.RCVBUF_ALLOCATOR, recvByteBufAllocator); + serverBootstrap.option(ChannelOption.RECVBUF_ALLOCATOR, recvByteBufAllocator); + serverBootstrap.childOption(ChannelOption.RECVBUF_ALLOCATOR, recvByteBufAllocator); final boolean reuseAddress = SETTING_HTTP_TCP_REUSE_ADDRESS.get(settings); serverBootstrap.option(ChannelOption.SO_REUSEADDR, reuseAddress); @@ -575,7 +581,7 @@ protected ChannelInboundHandlerAdapter createHeaderVerifier() { * Used in instances to conditionally decompress depending on the outcome from header verification */ protected ChannelInboundHandlerAdapter createDecompressor() { - return new HttpContentDecompressor(); + return new HttpContentDecompressor(UNLIMITED_DECOMPRESSOR_BUFFER); } /** diff --git a/modules/transport-netty4/src/main/java/org/opensearch/transport/NettyAllocator.java b/modules/transport-netty4/src/main/java/org/opensearch/transport/NettyAllocator.java index ff901476c162d..c291680f4fd5e 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/transport/NettyAllocator.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/transport/NettyAllocator.java @@ -117,7 +117,6 @@ public class NettyAllocator { maxOrder = 5; } } - int tinyCacheSize = PooledByteBufAllocator.defaultTinyCacheSize(); int smallCacheSize = PooledByteBufAllocator.defaultSmallCacheSize(); int normalCacheSize = PooledByteBufAllocator.defaultNormalCacheSize(); boolean useCacheForAllThreads = PooledByteBufAllocator.defaultUseCacheForAllThreads(); @@ -127,7 +126,6 @@ public class NettyAllocator { 0, pageSize, maxOrder, - tinyCacheSize, smallCacheSize, normalCacheSize, useCacheForAllThreads diff --git a/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java b/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java index 454293442572c..ae3930586c5b9 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java @@ -32,6 +32,8 @@ package org.opensearch.transport; +import io.netty.channel.MultiThreadIoEventLoopGroup; +import io.netty.channel.nio.NioIoHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.opensearch.common.settings.Settings; @@ -89,9 +91,10 @@ public synchronized SharedGroup getHttpGroup() { return getGenericGroup(); } else { if (dedicatedHttpGroup == null) { - NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup( + EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup( httpWorkerCount, - daemonThreadFactory(settings, HttpServerTransport.HTTP_SERVER_WORKER_THREAD_NAME_PREFIX) + daemonThreadFactory(settings, HttpServerTransport.HTTP_SERVER_WORKER_THREAD_NAME_PREFIX), + NioIoHandler.newFactory() ); dedicatedHttpGroup = new SharedGroup(new RefCountedGroup(eventLoopGroup)); } @@ -101,9 +104,10 @@ public synchronized SharedGroup getHttpGroup() { private SharedGroup getGenericGroup() { if (genericGroup == null) { - EventLoopGroup eventLoopGroup = new NioEventLoopGroup( + EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup( workerCount, - daemonThreadFactory(settings, TcpTransport.TRANSPORT_WORKER_THREAD_NAME_PREFIX) + daemonThreadFactory(settings, TcpTransport.TRANSPORT_WORKER_THREAD_NAME_PREFIX), + NioIoHandler.newFactory() ); this.genericGroup = new RefCountedGroup(eventLoopGroup); } else { diff --git a/modules/transport-netty4/src/main/java/org/opensearch/transport/netty4/Netty4Transport.java b/modules/transport-netty4/src/main/java/org/opensearch/transport/netty4/Netty4Transport.java index e76a227630dc1..6143411ab8b81 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/transport/netty4/Netty4Transport.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/transport/netty4/Netty4Transport.java @@ -218,7 +218,7 @@ private Bootstrap createClientBootstrap(SharedGroupFactory.SharedGroup sharedGro bootstrap.option(ChannelOption.SO_RCVBUF, Math.toIntExact(tcpReceiveBufferSize.getBytes())); } - bootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, recvByteBufAllocator); + bootstrap.option(ChannelOption.RECVBUF_ALLOCATOR, recvByteBufAllocator); final boolean reuseAddress = TransportSettings.TCP_REUSE_ADDRESS.get(settings); bootstrap.option(ChannelOption.SO_REUSEADDR, reuseAddress); @@ -288,8 +288,8 @@ private void createServerBootstrap(ProfileSettings profileSettings, SharedGroupF serverBootstrap.childOption(ChannelOption.SO_RCVBUF, Math.toIntExact(profileSettings.receiveBufferSize.bytesAsInt())); } - serverBootstrap.option(ChannelOption.RCVBUF_ALLOCATOR, recvByteBufAllocator); - serverBootstrap.childOption(ChannelOption.RCVBUF_ALLOCATOR, recvByteBufAllocator); + serverBootstrap.option(ChannelOption.RECVBUF_ALLOCATOR, recvByteBufAllocator); + serverBootstrap.childOption(ChannelOption.RECVBUF_ALLOCATOR, recvByteBufAllocator); serverBootstrap.option(ChannelOption.SO_REUSEADDR, profileSettings.reuseAddress); serverBootstrap.childOption(ChannelOption.SO_REUSEADDR, profileSettings.reuseAddress); From bb38a0cdc754028454d657ba47d37b8a0110851d Mon Sep 17 00:00:00 2001 From: Sergei Ustimenko Date: Mon, 15 Dec 2025 11:52:32 +0100 Subject: [PATCH 2/2] Add the CHANGELOG entry and run spotless Signed-off-by: Sergei Ustimenko --- CHANGELOG.md | 1 + .../opensearch/http/netty4/Netty4HttpServerTransport.java | 3 +-- .../java/org/opensearch/transport/SharedGroupFactory.java | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a70798cc9f309..9a39a5d8860bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Fix bug of warm index: FullFileCachedIndexInput was closed error ([#20055](https://github.com/opensearch-project/OpenSearch/pull/20055)) - Fix flaky test ClusterMaxMergesAtOnceIT.testClusterLevelDefaultUpdatesMergePolicy ([#18056](https://github.com/opensearch-project/OpenSearch/issues/18056)) - Fix bug in Assertion framework(Yaml Rest test): numeric comparison fails when comparing Integer vs Long (or Float vs Double) ([#19376](https://github.com/opensearch-project/OpenSearch/pull/19376)) +- Fix Netty deprecation warnings in transport-netty4 module ([#20233](https://github.com/opensearch-project/OpenSearch/pull/20233)) ### Dependencies - Bump `com.google.auth:google-auth-library-oauth2-http` from 1.38.0 to 1.41.0 ([#20183](https://github.com/opensearch-project/OpenSearch/pull/20183)) diff --git a/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java b/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java index baaeb5f41bdc7..534a8298a1f5e 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/http/netty4/Netty4HttpServerTransport.java @@ -140,8 +140,7 @@ public class Netty4HttpServerTransport extends AbstractHttpServerTransport { private static final ByteSizeValue MTU = new ByteSizeValue(Long.parseLong(System.getProperty("opensearch.net.mtu", "1500"))); /** - * The size of the decompressor buffer for the http content - * that is going to be used with the {@link #createDecompressor()}. + * The size of the http content decompressor buffer that is going to be used with the {@link #createDecompressor()}. */ private static final int UNLIMITED_DECOMPRESSOR_BUFFER = 0; diff --git a/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java b/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java index ae3930586c5b9..0b80a0113ed70 100644 --- a/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java +++ b/modules/transport-netty4/src/main/java/org/opensearch/transport/SharedGroupFactory.java @@ -32,8 +32,6 @@ package org.opensearch.transport; -import io.netty.channel.MultiThreadIoEventLoopGroup; -import io.netty.channel.nio.NioIoHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.opensearch.common.settings.Settings; @@ -46,7 +44,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import io.netty.channel.EventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.MultiThreadIoEventLoopGroup; +import io.netty.channel.nio.NioIoHandler; import io.netty.util.concurrent.Future; import static org.opensearch.common.util.concurrent.OpenSearchExecutors.daemonThreadFactory;