You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2017/05/13 00:07:33 UTC

hbase git commit: Fix broke unit test. Use nice facility I found in procedure testing utility in a few other tests... in place of checking for symptom

Repository: hbase
Updated Branches:
  refs/heads/HBASE-14614 4ab52f2c1 -> 61ed02691


Fix broke unit test. Use nice facility I found in procedure testing utility in a few other tests... in place of checking for symptom


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

Branch: refs/heads/HBASE-14614
Commit: 61ed02691bf4dd66fb5ac4e5205a884a908eea00
Parents: 4ab52f2
Author: Michael Stack <st...@apache.org>
Authored: Fri May 12 17:07:27 2017 -0700
Committer: Michael Stack <st...@apache.org>
Committed: Fri May 12 17:07:27 2017 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/master/CatalogJanitor.java     |  8 ++++--
 .../hadoop/hbase/master/TestCatalogJanitor.java | 28 ++++++++------------
 .../TestSplitTransactionOnCluster.java          |  3 ++-
 3 files changed, 19 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/61ed0269/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
index 2331d8f..7d43f2f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/CatalogJanitor.java
@@ -45,6 +45,7 @@ import org.apache.hadoop.hbase.master.assignment.AssignmentManager;
 import org.apache.hadoop.hbase.master.assignment.GCMergedRegionsProcedure;
 import org.apache.hadoop.hbase.master.assignment.GCRegionProcedure;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
+import org.apache.hadoop.hbase.procedure2.Procedure;
 import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.util.Bytes;
@@ -54,6 +55,8 @@ import org.apache.hadoop.hbase.util.PairOfSameType;
 import org.apache.hadoop.hbase.util.Threads;
 import org.apache.hadoop.hbase.util.Triple;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * A janitor for the catalog tables.  Scans the <code>hbase:meta</code> catalog
  * table on a period looking for unused regions to garbage collect.
@@ -66,6 +69,7 @@ public class CatalogJanitor extends ScheduledChore {
   private final AtomicBoolean enabled = new AtomicBoolean(true);
   private final MasterServices services;
   private final Connection connection;
+  // PID of the last Procedure launched herein. Keep around for Tests.
 
   CatalogJanitor(final MasterServices services) {
     super("CatalogJanitor-" + services.getServerName().toShortString(), services,
@@ -215,8 +219,8 @@ public class CatalogJanitor extends ScheduledChore {
           + regionB.getShortNameToLog()
           + " from fs because merged region no longer holds references");
       ProcedureExecutor<MasterProcedureEnv> pe = this.services.getMasterProcedureExecutor();
-      pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),mergedRegion,
-          regionA, regionB));
+      pe.submitProcedure(new GCMergedRegionsProcedure(pe.getEnvironment(),
+          mergedRegion, regionA, regionB));
       return true;
     }
     return false;

http://git-wip-us.apache.org/repos/asf/hbase/blob/61ed0269/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
index 5c082a4..59e8fb3 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
@@ -53,6 +53,7 @@ import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.io.Reference;
 import org.apache.hadoop.hbase.master.CatalogJanitor.SplitParentFirstComparator;
 import org.apache.hadoop.hbase.master.assignment.MockMasterServices;
+import org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility;
 import org.apache.hadoop.hbase.regionserver.ChunkCreator;
 import org.apache.hadoop.hbase.regionserver.HStore;
 import org.apache.hadoop.hbase.regionserver.MemStoreLABImpl;
@@ -135,14 +136,14 @@ public class TestCatalogJanitor {
     // Add a parentdir for kicks so can check it gets removed by the catalogjanitor.
     fs.mkdirs(parentdir);
     assertFalse(this.janitor.cleanParent(parent, r));
+    ProcedureTestingUtility.waitAllProcedures(masterServices.getMasterProcedureExecutor());
+    assertTrue(fs.exists(parentdir));
     // Remove the reference file and try again.
     assertTrue(fs.delete(p, true));
     assertTrue(this.janitor.cleanParent(parent, r));
     // Parent cleanup is run async as a procedure. Make sure parentdir is removed.
-    LOG.info("Waiting on " + parentdir);
-    while (fs.exists(parentdir)) {
-      Threads.sleep(10);
-    }
+    ProcedureTestingUtility.waitAllProcedures(masterServices.getMasterProcedureExecutor());
+    assertTrue(!fs.exists(parentdir));
   }
 
   /**
@@ -455,10 +456,8 @@ public class TestCatalogJanitor {
     assertTrue(janitor.cleanParent(parent, parentMetaRow));
     Path parentDir = new Path(tabledir, parent.getEncodedName());
     // Cleanup procedure runs async. Wait till it done.
-    LOG.info("Waiting on parent " + parentDir);
-    while (fs.exists(parentDir)) {
-      Threads.sleep(10);
-    }
+    ProcedureTestingUtility.waitAllProcedures(masterServices.getMasterProcedureExecutor());
+    assertTrue(!fs.exists(parentDir));
     LOG.debug("Finished cleanup of parent region");
 
     // and now check to make sure that the files have actually been archived
@@ -525,11 +524,8 @@ public class TestCatalogJanitor {
     // Do the cleaning of the parent
     assertTrue(janitor.cleanParent(parent, r));
     Path parentDir = new Path(tabledir, parent.getEncodedName());
-    // Cleanup procedure runs async. Wait till it done.
-    LOG.info("Waiting on parent " + parentDir);
-    while (fs.exists(parentDir)) {
-      Threads.sleep(10);
-    }
+    ProcedureTestingUtility.waitAllProcedures(masterServices.getMasterProcedureExecutor());
+    assertTrue(!fs.exists(parentDir));
 
     // And now check to make sure that the files have actually been archived
     FileStatus[] archivedStoreFiles = fs.listStatus(storeArchive);
@@ -542,10 +538,8 @@ public class TestCatalogJanitor {
     // Do the cleaning of the parent
     assertTrue(janitor.cleanParent(parent, r));
     // Cleanup procedure runs async. Wait till it done.
-    LOG.info("Waiting on parent " + parentDir);
-    while (fs.exists(parentDir)) {
-      Threads.sleep(10);
-    }
+    ProcedureTestingUtility.waitAllProcedures(masterServices.getMasterProcedureExecutor());
+    assertTrue(!fs.exists(parentDir));
 
     // and now check to make sure that the files have actually been archived
     archivedStoreFiles = fs.listStatus(storeArchive);

http://git-wip-us.apache.org/repos/asf/hbase/blob/61ed0269/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
index a64d102..2630ce0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.java
@@ -77,6 +77,7 @@ import org.apache.hadoop.hbase.master.RegionState.State;
 import org.apache.hadoop.hbase.master.assignment.AssignmentManager;
 import org.apache.hadoop.hbase.master.assignment.RegionStates;
 import org.apache.hadoop.hbase.master.NoSuchProcedureException;
+import org.apache.hadoop.hbase.procedure2.Procedure;
 import org.apache.hadoop.hbase.procedure2.ProcedureTestingUtility;
 import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;
 import org.apache.hadoop.hbase.regionserver.throttle.NoLimitThroughputController;
@@ -534,7 +535,7 @@ public class TestSplitTransactionOnCluster {
       cluster.getMaster().setCatalogJanitorEnabled(true);
       LOG.info("Starting run of CatalogJanitor");
       cluster.getMaster().getCatalogJanitor().run();
-      LOG.info("Finished run of CatalogJanitor");
+      ProcedureTestingUtility.waitAllProcedures(cluster.getMaster().getMasterProcedureExecutor());
       RegionStates regionStates = master.getAssignmentManager().getRegionStates();
       ServerName regionServerOfRegion = regionStates.getRegionServerOfRegion(hri);
       assertEquals(null, regionServerOfRegion);