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/11/02 13:09:28 UTC

hbase git commit: HBASE-21422 NPE in TestMergeTableRegionsProcedure.testMergeWithoutPONR

Repository: hbase
Updated Branches:
  refs/heads/master ee55b558c -> e7f6c2972


HBASE-21422 NPE in TestMergeTableRegionsProcedure.testMergeWithoutPONR


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

Branch: refs/heads/master
Commit: e7f6c2972dba2bc1eff8a5ae39893603508336ea
Parents: ee55b55
Author: zhangduo <zh...@apache.org>
Authored: Fri Nov 2 20:54:00 2018 +0800
Committer: zhangduo <zh...@apache.org>
Committed: Fri Nov 2 20:54:00 2018 +0800

----------------------------------------------------------------------
 .../hbase/procedure2/ProcedureExecutor.java     | 14 +++----
 .../procedure2/ProcedureTestingUtility.java     |  7 ++--
 .../TestMergeTableRegionsProcedure.java         | 41 +++++++++-----------
 .../MasterProcedureTestingUtility.java          |  8 +++-
 .../procedure/TestServerCrashProcedure.java     |  4 +-
 5 files changed, 37 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/e7f6c297/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
index 9515a7a..f0affd2 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java
@@ -92,29 +92,29 @@ public class ProcedureExecutor<TEnvironment> {
    * break PE having it fail at various junctures. When non-null, testing is set to an instance of
    * the below internal {@link Testing} class with flags set for the particular test.
    */
-  Testing testing = null;
+  volatile Testing testing = null;
 
   /**
    * Class with parameters describing how to fail/die when in testing-context.
    */
   public static class Testing {
-    protected boolean killIfHasParent = true;
-    protected boolean killIfSuspended = false;
+    protected volatile boolean killIfHasParent = true;
+    protected volatile boolean killIfSuspended = false;
 
     /**
      * Kill the PE BEFORE we store state to the WAL. Good for figuring out if a Procedure is
      * persisting all the state it needs to recover after a crash.
      */
-    protected boolean killBeforeStoreUpdate = false;
-    protected boolean toggleKillBeforeStoreUpdate = false;
+    protected volatile boolean killBeforeStoreUpdate = false;
+    protected volatile boolean toggleKillBeforeStoreUpdate = false;
 
     /**
      * Set when we want to fail AFTER state has been stored into the WAL. Rarely used. HBASE-20978
      * is about a case where memory-state was being set after store to WAL where a crash could
      * cause us to get stuck. This flag allows killing at what was a vulnerable time.
      */
-    protected boolean killAfterStoreUpdate = false;
-    protected boolean toggleKillAfterStoreUpdate = false;
+    protected volatile boolean killAfterStoreUpdate = false;
+    protected volatile boolean toggleKillAfterStoreUpdate = false;
 
     protected boolean shouldKillBeforeStoreUpdate() {
       final boolean kill = this.killBeforeStoreUpdate;

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7f6c297/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java
index 5a7a664..452e08b 100644
--- a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java
+++ b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java
@@ -133,16 +133,15 @@ public class ProcedureTestingUtility {
     if (actionBeforeStartWorker != null) {
       actionBeforeStartWorker.call();
     }
+    if (avoidTestKillDuringRestart) {
+      procExecutor.testing = testing;
+    }
     if (startWorkers) {
       procExecutor.startWorkers();
     }
     if (startAction != null) {
       startAction.call();
     }
-
-    if (avoidTestKillDuringRestart) {
-      procExecutor.testing = testing;
-    }
   }
 
   public static void storeRestart(ProcedureStore procStore, ProcedureStore.ProcedureLoader loader)

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7f6c297/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 b223690..6a8c4b3 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,36 +275,31 @@ public class TestMergeTableRegionsProcedure {
 
   @Test
   public void testMergeWithoutPONR() throws Exception {
-    try {
-      final TableName tableName = TableName.valueOf("testMergeWithoutPONR");
-      final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
+    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(
-        new MergeTableRegionsProcedure(procExec.getEnvironment(), regionsToMerge, true));
+    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);
-    } catch (Throwable t) {
-      LOG.error("error!", t);
-      throw t;
-    }
+    assertRegionCount(tableName, initialRegionCount - 1);
   }
 
   private List<RegionInfo> createTable(final TableName tableName) throws Exception {

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7f6c297/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
index 452a501..98c3978 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java
@@ -110,8 +110,12 @@ public class MasterProcedureTestingUtility {
         @Override
         public Void call() throws Exception {
           AssignmentManager am = env.getAssignmentManager();
-          am.joinCluster();
-          master.setInitialized(true);
+          try {
+            am.joinCluster();
+            master.setInitialized(true);
+          } catch (Exception e) {
+            LOG.warn("Failed to load meta", e);
+          }
           return null;
         }
       });

http://git-wip-us.apache.org/repos/asf/hbase/blob/e7f6c297/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java
index f36afd4..0e4a84b 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestServerCrashProcedure.java
@@ -25,6 +25,7 @@ import java.io.IOException;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
@@ -63,7 +64,8 @@ public class TestServerCrashProcedure {
   private void setupConf(Configuration conf) {
     conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
     conf.set("hbase.balancer.tablesOnMaster", "none");
-    conf.setInt("hbase.client.retries.number", 3);
+    conf.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 3);
+    conf.setInt(HConstants.HBASE_CLIENT_SERVERSIDE_RETRIES_MULTIPLIER, 3);
   }
 
   @Before