HBASE-15850 Localize the configuration change in testCheckTableLocks to reduce flakiness of TestHBaseFsck test suite (Stephen Yuan Jiang)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/8aa8abfc Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/8aa8abfc Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/8aa8abfc Branch: refs/heads/HBASE-14850 Commit: 8aa8abfcb672e4b905c487a10f1511db431f7006 Parents: 5ac54e6 Author: Stephen Yuan Jiang <syuanjiang...@gmail.com> Authored: Wed May 18 09:41:13 2016 -0700 Committer: Stephen Yuan Jiang <syuanjiang...@gmail.com> Committed: Wed May 18 13:22:41 2016 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/util/TestHBaseFsckOneRS.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/8aa8abfc/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java index 165fea6..57bc77e 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.java @@ -1472,7 +1472,8 @@ public class TestHBaseFsckOneRS extends BaseTestHBaseFsck { TableLockManager.DEFAULT_TABLE_LOCK_EXPIRE_TIMEOUT_MS)); // let table lock expire hbck = doFsck(conf, false); - assertErrors(hbck, new HBaseFsck.ErrorReporter.ERROR_CODE[] {HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK}); + assertErrors(hbck, new HBaseFsck.ErrorReporter.ERROR_CODE[] { + HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK}); final CountDownLatch latch = new CountDownLatch(1); new Thread() { @@ -1496,24 +1497,27 @@ public class TestHBaseFsckOneRS extends BaseTestHBaseFsck { Threads.sleep(300); // wait some more to ensure writeLock.acquire() is called hbck = doFsck(conf, false); + // still one expired, one not-expired assertErrors(hbck, new HBaseFsck.ErrorReporter.ERROR_CODE[] { - HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK}); // still one expired, one not-expired + HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK}); edge.incrementTime(conf.getLong(TableLockManager.TABLE_LOCK_EXPIRE_TIMEOUT, TableLockManager.DEFAULT_TABLE_LOCK_EXPIRE_TIMEOUT_MS)); // let table lock expire hbck = doFsck(conf, false); - assertErrors(hbck, new HBaseFsck.ErrorReporter.ERROR_CODE[] {HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK, + assertErrors(hbck, new HBaseFsck.ErrorReporter.ERROR_CODE[] { + HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK, HBaseFsck.ErrorReporter.ERROR_CODE.EXPIRED_TABLE_LOCK}); // both are expired - conf.setLong(TableLockManager.TABLE_LOCK_EXPIRE_TIMEOUT, 1); + Configuration localConf = new Configuration(conf); // reaping from ZKInterProcessWriteLock uses znode cTime, // which is not injectable through EnvironmentEdge + localConf.setLong(TableLockManager.TABLE_LOCK_EXPIRE_TIMEOUT, 1); Threads.sleep(10); - hbck = doFsck(conf, true); // now fix both cases + hbck = doFsck(localConf, true); // now fix both cases - hbck = doFsck(conf, false); + hbck = doFsck(localConf, false); assertNoErrors(hbck); // ensure that locks are deleted