From 43a10df70fcf36999ce28e1ba0ac06e0d62ccaf1 Mon Sep 17 00:00:00 2001 From: zhangduo Date: Fri, 16 Nov 2018 11:18:58 +0800 Subject: [PATCH] HBASE-21485 Add more debug logs for remote procedure execution --- .../java/org/apache/hadoop/hbase/master/HMaster.java | 2 ++ .../hadoop/hbase/regionserver/RSRpcServices.java | 3 +++ .../regionserver/RemoteProcedureResultReporter.java | 2 ++ .../regionserver/handler/RSProcedureHandler.java | 11 ++++++----- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index df744b62466..31dc20867e3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -3888,6 +3888,7 @@ public class HMaster extends HRegionServer implements MasterServices { } public void remoteProcedureCompleted(long procId) { + LOG.debug("Remote procedure done, pid={}", procId); RemoteProcedure procedure = getRemoteProcedure(procId); if (procedure != null) { procedure.remoteOperationCompleted(procedureExecutor.getEnvironment()); @@ -3895,6 +3896,7 @@ public class HMaster extends HRegionServer implements MasterServices { } public void remoteProcedureFailed(long procId, RemoteProcedureException error) { + LOG.debug("Remote procedure failed, pid={}", procId, error); RemoteProcedure procedure = getRemoteProcedure(procId); if (procedure != null) { procedure.remoteOperationFailed(procedureExecutor.getEnvironment(), error); 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 17c582df672..df84dcf57f2 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 @@ -3734,10 +3734,13 @@ public class RSRpcServices implements HBaseRPCErrorHandler, callable = Class.forName(request.getProcClass()).asSubclass(RSProcedureCallable.class) .getDeclaredConstructor().newInstance(); } catch (Exception e) { + LOG.warn("Failed to instantiating remote procedure {}, pid={}", request.getProcClass(), + request.getProcId(), e); regionServer.remoteProcedureComplete(request.getProcId(), e); return; } callable.init(request.getProcData().toByteArray(), regionServer); + LOG.debug("Executing remote procedure {}, pid={}", callable.getClass(), request.getProcId()); regionServer.executeProcedure(request.getProcId(), callable); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.java index ac3e95a1435..efb044a7846 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.java @@ -57,9 +57,11 @@ class RemoteProcedureResultReporter extends Thread { public void complete(long procId, Throwable error) { RemoteProcedureResult.Builder builder = RemoteProcedureResult.newBuilder().setProcId(procId); if (error != null) { + LOG.debug("Failed to complete execution of proc pid={}", procId, error); builder.setStatus(RemoteProcedureResult.Status.ERROR).setError( ForeignExceptionUtil.toProtoForeignException(server.getServerName().toString(), error)); } else { + LOG.debug("Successfully complete execution of proc pid={}", procId); builder.setStatus(RemoteProcedureResult.Status.SUCCESS); } results.add(builder.build()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/RSProcedureHandler.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/RSProcedureHandler.java index d2175d0f44d..ddff13f0dd9 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/RSProcedureHandler.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/handler/RSProcedureHandler.java @@ -42,13 +42,14 @@ public class RSProcedureHandler extends EventHandler { @Override public void process() { - Exception error = null; + Throwable error = null; try { callable.call(); - } catch (Exception e) { - LOG.error("Catch exception when call RSProcedureCallable: ", e); - error = e; + } catch (Throwable t) { + LOG.error("Error when call RSProcedureCallable: ", t); + error = t; + } finally { + ((HRegionServer) server).remoteProcedureComplete(procId, error); } - ((HRegionServer) server).remoteProcedureComplete(procId, error); } }