You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/10/24 07:43:28 UTC

hbase git commit: HBASE-21377 Add debug log for catching the root cause

Repository: hbase
Updated Branches:
  refs/heads/master b2fcf765a -> 3fe8649b2


HBASE-21377 Add debug log for catching the root cause


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/3fe8649b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/3fe8649b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/3fe8649b

Branch: refs/heads/master
Commit: 3fe8649b2c9ba1271c25e8f476548907e4c7a90d
Parents: b2fcf76
Author: Duo Zhang <zh...@apache.org>
Authored: Wed Oct 24 15:41:56 2018 +0800
Committer: Duo Zhang <zh...@apache.org>
Committed: Wed Oct 24 15:43:12 2018 +0800

----------------------------------------------------------------------
 .../hbase/procedure2/RootProcedureState.java    |  5 +++
 .../procedure2/store/wal/WALProcedureTree.java  |  3 ++
 .../TestMergeTableRegionsProcedure.java         | 39 +++++++++++---------
 3 files changed, 30 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/3fe8649b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java
index 2fc0030..a7cdaab 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java
@@ -24,6 +24,8 @@ import java.util.List;
 import java.util.Set;
 import org.apache.yetus.audience.InterfaceAudience;
 import org.apache.yetus.audience.InterfaceStability;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.ProcedureState;
 
@@ -42,6 +44,8 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.ProcedureProtos.Procedu
 @InterfaceStability.Evolving
 class RootProcedureState<TEnvironment> {
 
+  private static final Logger LOG = LoggerFactory.getLogger(RootProcedureState.class);
+
   private enum State {
     RUNNING,         // The Procedure is running or ready to run
     FAILED,          // The Procedure failed, waiting for the rollback executing
@@ -146,6 +150,7 @@ class RootProcedureState<TEnvironment> {
       subprocStack = new ArrayList<>();
     }
     proc.addStackIndex(subprocStack.size());
+    LOG.debug("Add procedure {} as the {}th rollback step", proc, subprocStack.size());
     subprocStack.add(proc);
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/3fe8649b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureTree.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureTree.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureTree.java
index c32bd7f..6e624b4 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureTree.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureTree.java
@@ -145,6 +145,9 @@ public final class WALProcedureTree {
 
   private void collectStackId(Entry entry, Map<Integer, List<Entry>> stackId2Proc,
       MutableInt maxStackId) {
+    if (LOG.isDebugEnabled()) {
+      LOG.debug("Procedure {} stack ids={}", entry, entry.proc.getStackIdList());
+    }
     for (int i = 0, n = entry.proc.getStackIdCount(); i < n; i++) {
       int stackId = entry.proc.getStackId(i);
       if (stackId > maxStackId.intValue()) {

http://git-wip-us.apache.org/repos/asf/hbase/blob/3fe8649b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.java
index 858d20c..b223690 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.java
@@ -275,31 +275,36 @@ public class TestMergeTableRegionsProcedure {
 
   @Test
   public void testMergeWithoutPONR() throws Exception {
-    final TableName tableName = TableName.valueOf("testMergeWithoutPONR");
-    final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
+    try {
+      final TableName tableName = TableName.valueOf("testMergeWithoutPONR");
+      final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
 
-    List<RegionInfo> tableRegions = createTable(tableName);
+      List<RegionInfo> tableRegions = createTable(tableName);
 
-    ProcedureTestingUtility.waitNoProcedureRunning(procExec);
-    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
+      ProcedureTestingUtility.waitNoProcedureRunning(procExec);
+      ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
 
-    RegionInfo[] regionsToMerge = new RegionInfo[2];
-    regionsToMerge[0] = tableRegions.get(0);
-    regionsToMerge[1] = tableRegions.get(1);
+      RegionInfo[] regionsToMerge = new RegionInfo[2];
+      regionsToMerge[0] = tableRegions.get(0);
+      regionsToMerge[1] = tableRegions.get(1);
 
-    long procId = procExec.submitProcedure(
+      long procId = procExec.submitProcedure(
         new MergeTableRegionsProcedure(procExec.getEnvironment(), regionsToMerge, true));
 
-    // Execute until step 9 of split procedure
-    // NOTE: step 9 is after step MERGE_TABLE_REGIONS_UPDATE_META
-    MasterProcedureTestingUtility.testRecoveryAndDoubleExecution(procExec, procId, 9, false);
+      // Execute until step 9 of split procedure
+      // NOTE: step 9 is after step MERGE_TABLE_REGIONS_UPDATE_META
+      MasterProcedureTestingUtility.testRecoveryAndDoubleExecution(procExec, procId, 9, false);
 
-    // Unset Toggle Kill and make ProcExec work correctly
-    ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);
-    MasterProcedureTestingUtility.restartMasterProcedureExecutor(procExec);
-    ProcedureTestingUtility.waitProcedure(procExec, procId);
+      // Unset Toggle Kill and make ProcExec work correctly
+      ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);
+      MasterProcedureTestingUtility.restartMasterProcedureExecutor(procExec);
+      ProcedureTestingUtility.waitProcedure(procExec, procId);
 
-    assertRegionCount(tableName, initialRegionCount - 1);
+      assertRegionCount(tableName, initialRegionCount - 1);
+    } catch (Throwable t) {
+      LOG.error("error!", t);
+      throw t;
+    }
   }
 
   private List<RegionInfo> createTable(final TableName tableName) throws Exception {