Repository: hbase
Updated Branches:
  refs/heads/branch-1 f7c35f8b5 -> 5197640c3
  refs/heads/master 948746ce4 -> fb5e6b3f7


HBASE-13179 TestMasterObserver deleteTable is flaky


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

Branch: refs/heads/master
Commit: fb5e6b3f75ad29ffebeaad1fac4c4fdebd69684f
Parents: 948746c
Author: Matteo Bertozzi <matteo.berto...@cloudera.com>
Authored: Mon Mar 9 19:47:27 2015 +0000
Committer: Matteo Bertozzi <matteo.berto...@cloudera.com>
Committed: Mon Mar 9 19:47:27 2015 +0000

----------------------------------------------------------------------
 .../hbase/coprocessor/TestMasterObserver.java   | 23 +++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/fb5e6b3f/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
index 61263d6..f5ea748 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java
@@ -77,6 +77,7 @@ public class TestMasterObserver {
   private static final Log LOG = LogFactory.getLog(TestMasterObserver.class);
 
   public static CountDownLatch tableCreationLatch = new CountDownLatch(1);
+  public static CountDownLatch tableDeletionLatch = new CountDownLatch(1);
 
   public static class CPMasterObserver implements MasterObserver {
 
@@ -876,6 +877,7 @@ public class TestMasterObserver {
         ObserverContext<MasterCoprocessorEnvironment> ctx, TableName tableName)
         throws IOException {
       postDeleteTableHandlerCalled = true;
+      tableDeletionLatch.countDown();
     }
 
     public boolean wasDeleteTableHandlerCalled() {
@@ -1274,7 +1276,7 @@ public class TestMasterObserver {
     // delete table
     admin.disableTable(tableName);
     assertTrue(admin.isTableDisabled(tableName));
-    admin.deleteTable(tableName);
+    deleteTable(admin, tableName);
     assertFalse("Test table should have been deleted",
         admin.tableExists(tableName));
     // preDeleteTable can't bypass default action.
@@ -1357,7 +1359,7 @@ public class TestMasterObserver {
     assertFalse("No table deleted yet", cp.wasDeleteTableCalled());
     assertFalse("Delete table handler should not be called.",
         cp.wasDeleteTableHandlerCalled());
-    admin.deleteTable(tableName);
+    deleteTable(admin, tableName);
     assertFalse("Test table should have been deleted",
         admin.tableExists(tableName));
     assertTrue("Coprocessor should have been called on table delete",
@@ -1410,7 +1412,7 @@ public class TestMasterObserver {
         cp.wasRestoreSnapshotCalled());
       admin.disableTable(TEST_CLONE);
       assertTrue(admin.isTableDisabled(tableName));
-      admin.deleteTable(TEST_CLONE);
+      deleteTable(admin, TEST_CLONE);
 
       // Test restore operation
       cp.resetStates();
@@ -1424,7 +1426,7 @@ public class TestMasterObserver {
       assertTrue("Coprocessor should have been called on snapshot delete",
         cp.wasDeleteSnapshotCalled());
     } finally {
-      admin.deleteTable(tableName);
+      deleteTable(admin, tableName);
     }
   }
 
@@ -1604,7 +1606,9 @@ public class TestMasterObserver {
       assertTrue("Coprocessor should be called on region rebalancing",
           cp.wasBalanceCalled());
     } finally {
-      UTIL.deleteTable(tableName);
+      Admin admin = UTIL.getHBaseAdmin();
+      admin.disableTable(tableName);
+      deleteTable(admin, tableName);
     }
   }
 
@@ -1651,4 +1655,13 @@ public class TestMasterObserver {
     assertTrue("Coprocessor should be called on table names request",
       cp.wasGetTableNamesCalled());
   }
+
+  private void deleteTable(Admin admin, TableName tableName) throws Exception {
+    // NOTE: We need a latch because admin is not sync,
+    // so the postOp coprocessor method may be called after the admin 
operation returned.
+    tableDeletionLatch = new CountDownLatch(1);
+    admin.deleteTable(tableName);
+    tableDeletionLatch.await();
+    tableDeletionLatch = new CountDownLatch(1);
+  }
 }

Reply via email to