You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2015/12/07 17:55:45 UTC

[08/50] [abbrv] hbase git commit: HBASE-14897 TestTableLockManager.testReapAllTableLocks is flakey

HBASE-14897 TestTableLockManager.testReapAllTableLocks is flakey


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

Branch: refs/heads/hbase-12439
Commit: 47082579a85fae1b3f7156963609819369b353d8
Parents: 756e6de
Author: chenheng <ch...@apache.org>
Authored: Tue Dec 1 10:31:00 2015 +0800
Committer: chenheng <ch...@apache.org>
Committed: Tue Dec 1 10:31:00 2015 +0800

----------------------------------------------------------------------
 .../hbase/master/TestTableLockManager.java      | 30 ++++++++++++++++++--
 1 file changed, 27 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/47082579/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
index 5152b3e..14e4844 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestTableLockManager.java
@@ -41,6 +41,7 @@ import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.InterProcessLock;
 import org.apache.hadoop.hbase.NotServingRegionException;
 import org.apache.hadoop.hbase.ScheduledChore;
 import org.apache.hadoop.hbase.ServerName;
@@ -129,7 +130,7 @@ public class TestTableLockManager {
 
     HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
     master.getMasterCoprocessorHost().load(TestAlterAndDisableMasterObserver.class,
-        0, TEST_UTIL.getConfiguration());
+            0, TEST_UTIL.getConfiguration());
 
     ExecutorService executor = Executors.newFixedThreadPool(2);
     Future<Object> alterTableFuture = executor.submit(new Callable<Object>() {
@@ -233,6 +234,23 @@ public class TestTableLockManager {
 
   }
 
+  public class TableLockCounter implements InterProcessLock.MetadataHandler {
+
+    private int lockCount = 0;
+
+    @Override
+    public void handleMetadata(byte[] metadata) {
+      lockCount++;
+    }
+
+    public void reset() {
+      lockCount = 0;
+    }
+
+    public int getLockCount() {
+      return lockCount;
+    }
+  }
 
   @Test(timeout = 600000)
   public void testReapAllTableLocks() throws Exception {
@@ -257,7 +275,7 @@ public class TestTableLockManager {
           public Void call() throws Exception {
             writeLocksAttempted.countDown();
             lockManager.writeLock(TableName.valueOf(table),
-                "testReapAllTableLocks").acquire();
+                    "testReapAllTableLocks").acquire();
             writeLocksObtained.countDown();
             return null;
           }
@@ -268,9 +286,15 @@ public class TestTableLockManager {
     writeLocksObtained.await();
     writeLocksAttempted.await();
 
+    TableLockCounter counter = new TableLockCounter();
+    do {
+      counter.reset();
+      lockManager.visitAllLocks(counter);
+      Thread.sleep(10);
+    } while (counter.getLockCount() != 10);
+
     //now reap all table locks
     lockManager.reapWriteLocks();
-
     TEST_UTIL.getConfiguration().setInt(TableLockManager.TABLE_WRITE_LOCK_TIMEOUT_MS, 0);
     TableLockManager zeroTimeoutLockManager = TableLockManager.createTableLockManager(
           TEST_UTIL.getConfiguration(), TEST_UTIL.getZooKeeperWatcher(), serverName);