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);