diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java index 31484bb..3e8e89c 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/CallRunner.java @@ -71,7 +71,7 @@ public class CallRunner { if (RpcServer.LOG.isDebugEnabled()) { RpcServer.LOG.debug(Thread.currentThread().getName() + ": skipped " + call); } - return; + throw new ClosedChannelException(); } this.status.setStatus("Setting up call"); this.status.setConnection(call.connection.getHostAddress(), call.connection.getRemotePort()); @@ -110,7 +110,6 @@ public class CallRunner { RequestContext.clear(); } RpcServer.CurCall.set(null); - this.rpcServer.addCallSize(call.getSize() * -1); // Set the response for undelayed calls and delayed calls with // undelayed responses. if (!call.isDelayed() || !call.isReturnValueDelayed()) { @@ -139,6 +138,9 @@ public class CallRunner { } catch (Exception e) { RpcServer.LOG.warn(Thread.currentThread().getName() + ": caught: " + StringUtils.stringifyException(e)); + } finally { + // regardless if succesful or not we need to reset the callQueueSize + this.rpcServer.addCallSize(call.getSize() * -1); } }