HBASE-24282 'scanDetail' log message is missing when responseTooSlow happens on the first scan rpc call (#1604)

Signed-off-by: Guangxu Cheng <gxcheng@apache.org>
Signed-off-by: stack <stack@apache.org>
This commit is contained in:
xincunSong 2020-04-30 07:03:24 +08:00 committed by Andrew Purtell
parent 178005efb9
commit 92654691d7
No known key found for this signature in database
GPG Key ID: 8597754DD5365CCD
2 changed files with 22 additions and 4 deletions

View File

@ -2501,12 +2501,15 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
responseInfo.put("param", stringifiedParam);
if (param instanceof ClientProtos.ScanRequest && rsRpcServices != null) {
ClientProtos.ScanRequest request = ((ClientProtos.ScanRequest) param);
String scanDetails;
if (request.hasScannerId()) {
long scannerId = request.getScannerId();
String scanDetails = rsRpcServices.getScanDetailsWithId(scannerId);
if (scanDetails != null) {
responseInfo.put("scandetails", scanDetails);
}
scanDetails = rsRpcServices.getScanDetailsWithId(scannerId);
} else {
scanDetails = rsRpcServices.getScanDetailsWithRequest(request);
}
if (scanDetails != null) {
responseInfo.put("scandetails", scanDetails);
}
}
if (param instanceof ClientProtos.MultiRequest) {

View File

@ -1260,6 +1260,21 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
return builder.toString();
}
public String getScanDetailsWithRequest(ScanRequest request) {
try {
if (!request.hasRegion()) {
return null;
}
Region region = getRegion(request.getRegion());
StringBuilder builder = new StringBuilder();
builder.append("table: ").append(region.getRegionInfo().getTable().getNameAsString());
builder.append(" region: ").append(region.getRegionInfo().getRegionNameAsString());
return builder.toString();
} catch (IOException ignored) {
return null;
}
}
/**
* Get the vtime associated with the scanner.
* Currently the vtime is the number of "next" calls.