From ea6fa8496797575c1a337361c801b17dbe9322f4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 26 Jul 2024 15:49:21 +0200 Subject: [PATCH] Remove ExtendedOptions workaround https://issues.apache.org/jira/browse/KARAF-7690 has been fixed quite a while ago, remove the framework working it around. Change-Id: Ie44343950f3f55457463bb40bd983dca09c449ec Signed-off-by: Robert Varga --- .../netconf/transport/tcp/NioNettyImpl.java | 96 ++++--------------- 1 file changed, 19 insertions(+), 77 deletions(-) diff --git a/transport/transport-tcp/src/main/java/org/opendaylight/netconf/transport/tcp/NioNettyImpl.java b/transport/transport-tcp/src/main/java/org/opendaylight/netconf/transport/tcp/NioNettyImpl.java index 470ef187c8..18b7edd780 100644 --- a/transport/transport-tcp/src/main/java/org/opendaylight/netconf/transport/tcp/NioNettyImpl.java +++ b/transport/transport-tcp/src/main/java/org/opendaylight/netconf/transport/tcp/NioNettyImpl.java @@ -12,7 +12,6 @@ import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannelConfig; import io.netty.channel.socket.nio.NioChannelOption; import io.netty.channel.socket.nio.NioServerSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; @@ -21,82 +20,13 @@ import java.util.concurrent.ThreadFactory; import jdk.net.ExtendedSocketOptions; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.tcp.common.rev240208.tcp.common.grouping.Keepalives; -import org.slf4j.LoggerFactory; @NonNullByDefault final class NioNettyImpl extends AbstractNettyImpl { - // FIXME: all of this is a workaround for https://issues.apache.org/jira/browse/KARAF-7690 - private abstract static class AbstractSupport { - - abstract boolean configureKeepalives(SocketChannelConfig config); - - abstract void configureKeepalives(ServerBootstrap bootstrap, Keepalives keepalives); - - abstract void configureKeepalives(Bootstrap bootstrap, Keepalives keepalives); - } - - private static final class Supported extends AbstractSupport { - private static final ChannelOption TCP_KEEPIDLE = - NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPIDLE); - private static final ChannelOption TCP_KEEPCNT = - NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPCOUNT); - private static final ChannelOption TCP_KEEPINTVL = - NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPINTERVAL); - - @Override - boolean configureKeepalives(final SocketChannelConfig config) { - return config.setOptions(Map.of( - ChannelOption.SO_KEEPALIVE, Boolean.TRUE, TCP_KEEPIDLE, 7200, TCP_KEEPCNT, 3, TCP_KEEPINTVL, 5)); - } - - @Override - void configureKeepalives(final ServerBootstrap bootstrap, final Keepalives keepalives) { - bootstrap - .childOption(TCP_KEEPIDLE, keepalives.requireIdleTime().toJava()) - .childOption(TCP_KEEPCNT, keepalives.requireMaxProbes().toJava()) - .childOption(TCP_KEEPINTVL, keepalives.requireProbeInterval().toJava()); - } - - @Override - void configureKeepalives(final Bootstrap bootstrap, final Keepalives keepalives) { - bootstrap - .option(TCP_KEEPIDLE, keepalives.requireIdleTime().toJava()) - .option(TCP_KEEPCNT, keepalives.requireMaxProbes().toJava()) - .option(TCP_KEEPINTVL, keepalives.requireProbeInterval().toJava()); - } - } - - private static final class Unsupported extends AbstractSupport { - @Override - boolean configureKeepalives(final SocketChannelConfig config) { - return false; - } - - @Override - void configureKeepalives(final ServerBootstrap bootstrap, final Keepalives keepalives) { - // Noop - } - - @Override - void configureKeepalives(final Bootstrap bootstrap, final Keepalives keepalives) { - // Noop - } - } - - private static final AbstractSupport SUPPORT; - - static { - AbstractSupport support; - - try { - support = new Supported(); - } catch (NoClassDefFoundError e) { - LoggerFactory.getLogger(NioNettyImpl.class).warn("Disabling keepalive support", e); - support = new Unsupported(); - } - - SUPPORT = support; - } + private static final ChannelOption TCP_KEEPIDLE = NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPIDLE); + private static final ChannelOption TCP_KEEPCNT = NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPCOUNT); + private static final ChannelOption TCP_KEEPINTVL = + NioChannelOption.of(ExtendedSocketOptions.TCP_KEEPINTERVAL); static final NioNettyImpl INSTANCE; @@ -109,7 +39,11 @@ final class NioNettyImpl extends AbstractNettyImpl { final boolean supportsKeepalives; try { - supportsKeepalives = SUPPORT.configureKeepalives(ch.config()); + supportsKeepalives = ch.config().setOptions(Map.of( + ChannelOption.SO_KEEPALIVE, Boolean.TRUE, + TCP_KEEPIDLE, 7200, + TCP_KEEPCNT, 3, + TCP_KEEPINTVL, 5)); } finally { ch.close().sync(); } @@ -151,12 +85,20 @@ final class NioNettyImpl extends AbstractNettyImpl { @Override void configureKeepalives(final Bootstrap bootstrap, final Keepalives keepalives) { - SUPPORT.configureKeepalives(bootstrap.option(ChannelOption.SO_KEEPALIVE, Boolean.TRUE), keepalives); + bootstrap + .option(ChannelOption.SO_KEEPALIVE, Boolean.TRUE) + .option(TCP_KEEPIDLE, keepalives.requireIdleTime().toJava()) + .option(TCP_KEEPCNT, keepalives.requireMaxProbes().toJava()) + .option(TCP_KEEPINTVL, keepalives.requireProbeInterval().toJava()); } @Override void configureKeepalives(final ServerBootstrap bootstrap, final Keepalives keepalives) { - SUPPORT.configureKeepalives(bootstrap.childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE), keepalives); + bootstrap + .childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE) + .childOption(TCP_KEEPIDLE, keepalives.requireIdleTime().toJava()) + .childOption(TCP_KEEPCNT, keepalives.requireMaxProbes().toJava()) + .childOption(TCP_KEEPINTVL, keepalives.requireProbeInterval().toJava()); } @Override -- 2.36.6