You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2016/09/05 14:35:19 UTC

[2/2] qpid-jms git commit: QPIDJMS-205: update group shutdown to use 0ms grace period and await completion

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 <ro...@apache.org>
Authored: Mon Sep 5 15:33:45 2016 +0100
Committer: Robert Gemmell <ro...@apache.org>
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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org