Index: oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/FailoverClient.java =================================================================== --- oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/FailoverClient.java (revision 1628159) +++ oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/FailoverClient.java (working copy) @@ -119,14 +119,7 @@ log.error("can unregister failover status mbean", e); } observer.unregister(); - if (group != null && !group.isShuttingDown()) { - group.shutdownGracefully(1, 2, TimeUnit.SECONDS) - .syncUninterruptibly(); - } - if (executor != null && !executor.isShuttingDown()) { - executor.shutdownGracefully(1, 2, TimeUnit.SECONDS) - .syncUninterruptibly(); - } + shutdownNetty(); state = STATUS_CLOSED; } @@ -185,10 +178,22 @@ } finally { synchronized (this.sync) { this.active = false; + shutdownNetty(); } } } + private void shutdownNetty() { + if (group != null && !group.isShuttingDown()) { + group.shutdownGracefully(1, 2, TimeUnit.SECONDS) + .syncUninterruptibly(); + } + if (executor != null && !executor.isShuttingDown()) { + executor.shutdownGracefully(1, 2, TimeUnit.SECONDS) + .syncUninterruptibly(); + } + } + @Override public String getMode() { return "client: " + this.observer.getID();