HBASE-21559 The RestoreSnapshotFromClientTestBase related UT are flaky Signed-off-by: zhangduo <zhang...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/dfb9ae8e Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/dfb9ae8e Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/dfb9ae8e Branch: refs/heads/HBASE-20952 Commit: dfb9ae8e0e69ad84962b8768190f6891827767fa Parents: 170df27 Author: huzheng <open...@gmail.com> Authored: Thu Dec 6 20:35:30 2018 +0800 Committer: zhangduo <zhang...@apache.org> Committed: Fri Dec 7 08:22:22 2018 +0800 ---------------------------------------------------------------------- .../apache/hadoop/hbase/master/snapshot/SnapshotManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/dfb9ae8e/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java index ae9b6fb..2b963b2 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java @@ -27,6 +27,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -150,7 +151,7 @@ public class SnapshotManager extends MasterProcedureManager implements Stoppable // The map is always accessed and modified under the object lock using synchronized. // snapshotTable() will insert an Handler in the table. // isSnapshotDone() will remove the handler requested if the operation is finished. - private Map<TableName, SnapshotSentinel> snapshotHandlers = new HashMap<>(); + private Map<TableName, SnapshotSentinel> snapshotHandlers = new ConcurrentHashMap<>(); // Restore map, with table name as key, procedure ID as value. // The map is always accessed and modified under the object lock using synchronized. @@ -419,7 +420,7 @@ public class SnapshotManager extends MasterProcedureManager implements Stoppable * @param tableName name of the table being snapshotted. * @return <tt>true</tt> if there is a snapshot in progress on the specified table. */ - public synchronized boolean isTakingSnapshot(final TableName tableName) { + public boolean isTakingSnapshot(final TableName tableName) { SnapshotSentinel handler = this.snapshotHandlers.get(tableName); return handler != null && !handler.isFinished(); }