Index: oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java =================================================================== --- oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java (revision 1732269) +++ oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java (working copy) @@ -197,17 +197,17 @@ } private void shutdownNetty() { - if (group != null && !group.isShuttingDown()) { - group.shutdownGracefully(0, 1, TimeUnit.SECONDS) - .syncUninterruptibly(); + if (handler != null) { + handler.close(); + handler = null; } if (executor != null && !executor.isShuttingDown()) { executor.shutdownGracefully(0, 1, TimeUnit.SECONDS) .syncUninterruptibly(); } - if (handler != null) { - handler.close(); - handler = null; + if (group != null && !group.isShuttingDown()) { + group.shutdownGracefully(0, 1, TimeUnit.SECONDS) + .syncUninterruptibly(); } } Index: oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClientHandler.java =================================================================== --- oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClientHandler.java (revision 1732269) +++ oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClientHandler.java (working copy) @@ -51,7 +51,6 @@ private final boolean autoClean; private EventExecutorGroup loaderExecutor; - private ChannelHandlerContext ctx; public StandbyClientHandler(final StandbyStore store, CommunicationObserver observer, AtomicBoolean running, @@ -65,7 +64,6 @@ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { - this.ctx = ctx; log.debug("sending head request"); ctx.writeAndFlush(newGetHeadReq(this.observer.getID())); log.debug("did send head request"); @@ -74,7 +72,7 @@ @Override protected void channelRead0(ChannelHandlerContext ctx, RecordId msg) throws Exception { - setHead(msg); + setHead(ctx, msg); }; @Override @@ -82,7 +80,7 @@ ctx.flush(); } - synchronized void setHead(RecordId head) { + synchronized void setHead(ChannelHandlerContext ctx, RecordId head) { if (store.getHead().getRecordId().equals(head)) { // all sync'ed up @@ -115,14 +113,6 @@ @Override public synchronized void close() { - if (ctx != null) { - for (ChannelHandler h : ctx.pipeline().toMap().values()) { - ctx.pipeline().remove(h); - } - - ctx.close(); - ctx = null; - } if (loaderExecutor != null && !loaderExecutor.isShuttingDown()) { loaderExecutor.shutdownGracefully(0, 1, TimeUnit.SECONDS) .syncUninterruptibly();