You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2016/11/02 07:02:28 UTC
hbase git commit: HBASE-16972 Log more details for Scan#next request
when responseTooSlow
Repository: hbase
Updated Branches:
refs/heads/master c93c194e5 -> b1d1dc856
HBASE-16972 Log more details for Scan#next request when responseTooSlow
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b1d1dc85
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b1d1dc85
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b1d1dc85
Branch: refs/heads/master
Commit: b1d1dc856952176bd45fea88175a62c65e55004b
Parents: c93c194
Author: Yu Li <li...@apache.org>
Authored: Wed Nov 2 12:04:42 2016 +0800
Committer: Yu Li <li...@apache.org>
Committed: Wed Nov 2 15:02:07 2016 +0800
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/ipc/RpcServer.java | 23 ++++++++++++++++++++
.../hadoop/hbase/ipc/RpcServerInterface.java | 3 +++
.../hbase/regionserver/RSRpcServices.java | 12 ++++++++++
3 files changed, 38 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/b1d1dc85/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
index 7bcf3a7..64fe835 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
@@ -99,7 +99,9 @@ import org.apache.hadoop.hbase.io.ByteBufferPool;
import org.apache.hadoop.hbase.io.crypto.aes.CryptoAES;
import org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler;
import org.apache.hadoop.hbase.monitoring.TaskMonitor;
+import org.apache.hadoop.hbase.regionserver.RSRpcServices;
import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;
+import org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos;
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.VersionInfo;
import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos;
import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CellBlockMeta;
@@ -306,6 +308,12 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
private volatile boolean allowFallbackToSimpleAuth;
/**
+ * Used to get details for scan with a scanner_id<br/>
+ * TODO try to figure out a better way and remove reference from regionserver package later.
+ */
+ private RSRpcServices rsRpcServices;
+
+ /**
* Datastructure that holds all necessary to a method invocation and then afterward, carries
* the result.
*/
@@ -2554,6 +2562,16 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
responseInfo.put("method", methodName);
responseInfo.put("call", call);
responseInfo.put("param", ProtobufUtil.getShortTextFormat(param));
+ if (param instanceof ClientProtos.ScanRequest && rsRpcServices != null) {
+ ClientProtos.ScanRequest request = ((ClientProtos.ScanRequest) param);
+ if (request.hasScannerId()) {
+ long scannerId = request.getScannerId();
+ String scanDetails = rsRpcServices.getScanDetailsWithId(scannerId);
+ if (scanDetails != null) {
+ responseInfo.put("scandetails", scanDetails);
+ }
+ }
+ }
LOG.warn("(response" + tag + "): " + MAPPER.writeValueAsString(responseInfo));
}
@@ -2887,6 +2905,11 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
return scheduler;
}
+ @Override
+ public void setRsRpcServices(RSRpcServices rsRpcServices) {
+ this.rsRpcServices = rsRpcServices;
+ }
+
private class ConnectionManager {
final private AtomicInteger count = new AtomicInteger();
final private Set<Connection> connections;
http://git-wip-us.apache.org/repos/asf/hbase/blob/b1d1dc85/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java
index e75e842..5401e3f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServerInterface.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.CellScanner;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler;
+import org.apache.hadoop.hbase.regionserver.RSRpcServices;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.hadoop.security.authorize.PolicyProvider;
@@ -83,4 +84,6 @@ public interface RpcServerInterface {
void refreshAuthManager(PolicyProvider pp);
RpcScheduler getScheduler();
+
+ void setRsRpcServices(RSRpcServices rsRpcServices);
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b1d1dc85/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 35b2ab0..5f49897 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -1065,6 +1065,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
bindAddress, // use final bindAddress for this server.
rs.conf,
rpcSchedulerFactory.create(rs.conf, this, rs));
+ rpcServer.setRsRpcServices(this);
} catch (BindException be) {
String configName = (this instanceof MasterRpcServices) ? HConstants.MASTER_PORT :
HConstants.REGIONSERVER_PORT;
@@ -1130,6 +1131,17 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
return null;
}
+ public String getScanDetailsWithId(long scannerId) {
+ RegionScanner scanner = getScanner(scannerId);
+ if (scanner == null) {
+ return null;
+ }
+ StringBuilder builder = new StringBuilder();
+ builder.append("table: ").append(scanner.getRegionInfo().getTable().getNameAsString());
+ builder.append(" region: ").append(scanner.getRegionInfo().getRegionNameAsString());
+ return builder.toString();
+ }
+
/**
* Get the vtime associated with the scanner.
* Currently the vtime is the number of "next" calls.