Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 1513704) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (working copy) @@ -3607,7 +3607,7 @@ // client might time out and disconnect while the server side // is still processing the request. We should abort aggressively // in that case. - rpcCall.throwExceptionIfCallerDisconnected(); + rpcCall.throwExceptionIfCallerDisconnected(getRegionNameAsString()); } // Let's see what we have in the storeHeap. Index: hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java (revision 1513704) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcCallContext.java (working copy) @@ -24,5 +24,5 @@ * If called from outside the context of IPC, this does nothing. * @throws CallerDisconnectedException */ - void throwExceptionIfCallerDisconnected() throws CallerDisconnectedException; + void throwExceptionIfCallerDisconnected(String regionName) throws CallerDisconnectedException; } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java (revision 1513704) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java (working copy) @@ -437,12 +437,14 @@ } @Override - public void throwExceptionIfCallerDisconnected() throws CallerDisconnectedException { + public void throwExceptionIfCallerDisconnected(String regionName) + throws CallerDisconnectedException { if (!connection.channel.isOpen()) { long afterTime = System.currentTimeMillis() - timestamp; throw new CallerDisconnectedException( - "Aborting call " + this + " after " + afterTime + " ms, since " + - "caller disconnected"); + "Aborting on region " + regionName + ", call " + + this + " after " + afterTime + " ms, since " + + "caller disconnected"); } } Index: hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java =================================================================== --- hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java (revision 1513704) +++ hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java (working copy) @@ -2227,10 +2227,29 @@ return TextFormat.shortDebugString(m); } else if (m instanceof MutationProto) { return toShortString((MutationProto)m); + } else if (m instanceof GetRequest) { + GetRequest r = (GetRequest) m; + return "region= " + getStringForByteString(r.getRegion().getValue()) + + ", row=" + getStringForByteString(r.getGet().getRow()); + } else if (m instanceof ClientProtos.MultiRequest) { + ClientProtos.MultiRequest r = (ClientProtos.MultiRequest) m; + ClientProtos.MultiAction action = r.getActionList().get(0); + return "region= " + getStringForByteString(r.getRegion().getValue()) + + ", for " + r.getActionCount() + + " actions and 1st row key=" + getStringForByteString(action.hasMutation() ? + action.getMutation().getRow() : action.getGet().getRow()); + } else if (m instanceof ClientProtos.MutateRequest) { + ClientProtos.MutateRequest r = (ClientProtos.MutateRequest) m; + return "region= " + getStringForByteString(r.getRegion().getValue()) + + ", row=" + getStringForByteString(r.getMutation().getRow()); } return "TODO: " + m.getClass().toString(); } + private static String getStringForByteString(ByteString bs) { + return Bytes.toStringBinary(bs.toByteArray()); + } + /** * Print out some subset of a MutationProto rather than all of it and its data * @param proto Protobuf to print out