You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2018/02/20 15:47:09 UTC
[3/4] hbase git commit: HBASE-14897
TestTableLockManager.testReapAllTableLocks is flakey
HBASE-14897 TestTableLockManager.testReapAllTableLocks is flakey
(cherry picked from commit 47082579a85fae1b3f7156963609819369b353d8)
Signed-off-by: Sean Busbey <bu...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/149ebf3f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/149ebf3f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/149ebf3f
Branch: refs/heads/branch-1.3
Commit: 149ebf3f6fcb7413f54369f62ff557b0ee6e71d5
Parents: 1bd38fd
Author: chenheng <ch...@apache.org>
Authored: Tue Dec 1 10:31:00 2015 +0800
Committer: Sean Busbey <bu...@apache.org>
Committed: Tue Feb 20 09:17:12 2018 -0600
----------------------------------------------------------------------
.../hbase/master/TestTableLockManager.java | 32 +++++++++++++++++---
1 file changed, 28 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/149ebf3f/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 67806c5..16a6450 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
@@ -42,7 +42,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.testclassification.LargeTests;
+import org.apache.hadoop.hbase.InterProcessLock;
import org.apache.hadoop.hbase.NotServingRegionException;
import org.apache.hadoop.hbase.ScheduledChore;
import org.apache.hadoop.hbase.ServerName;
@@ -55,6 +55,7 @@ import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;
import org.apache.hadoop.hbase.coprocessor.ObserverContext;
import org.apache.hadoop.hbase.exceptions.LockTimeoutException;
import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.hbase.testclassification.LargeTests;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.LoadTestTool;
import org.apache.hadoop.hbase.util.StoppableImplementation;
@@ -130,7 +131,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>() {
@@ -234,6 +235,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 {
@@ -258,7 +276,7 @@ public class TestTableLockManager {
public Void call() throws Exception {
writeLocksAttempted.countDown();
lockManager.writeLock(TableName.valueOf(table),
- "testReapAllTableLocks").acquire();
+ "testReapAllTableLocks").acquire();
writeLocksObtained.countDown();
return null;
}
@@ -269,9 +287,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);