diff --git a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyConnectionClient.java b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyConnectionClient.java index 3e2fd50657..6f3171363c 100644 --- a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyConnectionClient.java +++ b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyConnectionClient.java @@ -131,7 +131,8 @@ public class NettyConnectionClient extends AbstractConnectionClient { NettyConfigOperator operator = new NettyConfigOperator(nettyChannel, getChannelHandler()); protocol.configClientPipeline(getUrl(), operator, nettySslContextOperator); - ch.closeFuture().addListener(channelFuture -> doClose()); + // set null but do not close this client, it will be reconnect in the future + ch.closeFuture().addListener(channelFuture -> channel.set(null)); // TODO support Socks5 } }); @@ -150,9 +151,7 @@ public class NettyConnectionClient extends AbstractConnectionClient { current.close(); } this.channel.set(null); - if (!closePromise.isDone()) { - closePromise.setSuccess(null); - } + closePromise.setSuccess(null); } } diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriplePingPongHandler.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriplePingPongHandler.java index b2134f330f..c767ee92ef 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriplePingPongHandler.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/TriplePingPongHandler.java @@ -70,7 +70,9 @@ public class TriplePingPongHandler extends ChannelDuplexHandler { @Override public void run() { - ctx.close(); + if (ctx.channel().isActive()) { + ctx.close(); + } } } }