QPIDJMS-205: update group shutdown to use 0ms grace period and await completion
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/87dbd80d Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/87dbd80d Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/87dbd80d Branch: refs/heads/master Commit: 87dbd80dc61928b5ce228342ccf26f7a3a4de006 Parents: 4a8f873 Author: Robert Gemmell <[email protected]> Authored: Mon Sep 5 15:33:45 2016 +0100 Committer: Robert Gemmell <[email protected]> Committed: Mon Sep 5 15:33:45 2016 +0100 ---------------------------------------------------------------------- .../jms/transports/netty/NettyTcpTransport.java | 24 +++++++++++++------- .../jms/transports/netty/NettyEchoServer.java | 4 ---- .../qpid/jms/transports/netty/NettyServer.java | 12 ++++++---- 3 files changed, 24 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/87dbd80d/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java index 08c5806..f1678af 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/transports/netty/NettyTcpTransport.java @@ -58,8 +58,7 @@ public class NettyTcpTransport implements Transport { private static final Logger LOG = LoggerFactory.getLogger(NettyTcpTransport.class); - private static final int QUIET_PERIOD = 20; - private static final int SHUTDOWN_TIMEOUT = 100; + private static final int SHUTDOWN_TIMEOUT = 50; protected Bootstrap bootstrap; protected EventLoopGroup group; @@ -168,7 +167,10 @@ public class NettyTcpTransport implements Transport { channel = null; } if (group != null) { - group.shutdownGracefully(QUIET_PERIOD, SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + Future<?> fut = group.shutdownGracefully(0, SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + if (!fut.awaitUninterruptibly(2 * SHUTDOWN_TIMEOUT)) { + LOG.trace("Channel group shutdown failed to complete in allotted time"); + } group = null; } @@ -201,11 +203,17 @@ public class NettyTcpTransport implements Transport { public void close() throws IOException { if (closed.compareAndSet(false, true)) { connected.set(false); - if (channel != null) { - channel.close().syncUninterruptibly(); - } - if (group != null) { - group.shutdownGracefully(QUIET_PERIOD, SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + try { + if (channel != null) { + channel.close().syncUninterruptibly(); + } + } finally { + if (group != null) { + Future<?> fut = group.shutdownGracefully(0, SHUTDOWN_TIMEOUT, TimeUnit.MILLISECONDS); + if (!fut.awaitUninterruptibly(2 * SHUTDOWN_TIMEOUT)) { + LOG.trace("Channel group shutdown failed to complete in allotted time"); + } + } } } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/87dbd80d/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java index 7a25617..32e86f8 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyEchoServer.java @@ -32,10 +32,6 @@ public class NettyEchoServer extends NettyServer { private static final Logger LOG = LoggerFactory.getLogger(NettyEchoServer.class); - public NettyEchoServer(TransportOptions options) { - super(options); - } - public NettyEchoServer(TransportOptions options, boolean needClientAuth) { super(options, needClientAuth); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/87dbd80d/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java index af0cf67..28bc72c 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/transports/netty/NettyServer.java @@ -208,10 +208,14 @@ public abstract class NettyServer implements AutoCloseable { } // Shut down all event loops to terminate all threads. - LOG.info("Shutting down boss group"); - bossGroup.shutdownGracefully(10, 100, TimeUnit.MILLISECONDS); - LOG.info("Shutting down worker group"); - workerGroup.shutdownGracefully(10, 100, TimeUnit.MILLISECONDS); + int timeout = 100; + LOG.trace("Shutting down boss group"); + bossGroup.shutdownGracefully(0, timeout, TimeUnit.MILLISECONDS).awaitUninterruptibly(timeout); + LOG.trace("Boss group shut down"); + + LOG.trace("Shutting down worker group"); + workerGroup.shutdownGracefully(0, timeout, TimeUnit.MILLISECONDS).awaitUninterruptibly(timeout); + LOG.trace("Worker group shut down"); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
