You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zg...@apache.org on 2019/05/29 07:22:10 UTC
[hbase] 01/02: HBASE-22486 Fix flaky test TestLockManager
This is an automated email from the ASF dual-hosted git repository.
zghao pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/hbase.git
commit 21241d03d9406ba3990c539b72da0901fbcf15b7
Author: Guanghao <zg...@apache.org>
AuthorDate: Wed May 29 10:58:10 2019 +0800
HBASE-22486 Fix flaky test TestLockManager
---
.../java/org/apache/hadoop/hbase/master/locking/LockProcedure.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java
index 3a87bbc..dc1e5bc 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java
@@ -90,6 +90,8 @@ public final class LockProcedure extends Procedure<MasterProcedureEnv>
// DEFAULT_LOCAL_MASTER_LOCKS_TIMEOUT_MS (10 min) so that there is no need to heartbeat.
private final CountDownLatch lockAcquireLatch;
+ private volatile boolean suspended = false;
+
@Override
public TableName getTableName() {
return tableName;
@@ -219,9 +221,10 @@ public final class LockProcedure extends Procedure<MasterProcedureEnv>
locked.set(false);
// Maybe timeout already awakened the event and the procedure has finished.
synchronized (event) {
- if (!event.isReady()) {
+ if (!event.isReady() && suspended) {
setState(ProcedureProtos.ProcedureState.RUNNABLE);
event.wake(env.getProcedureScheduler());
+ suspended = false;
}
}
}
@@ -244,6 +247,7 @@ public final class LockProcedure extends Procedure<MasterProcedureEnv>
event.suspend();
event.suspendIfNotReady(this);
setState(ProcedureProtos.ProcedureState.WAITING_TIMEOUT);
+ suspended = true;
}
throw new ProcedureSuspendedException();
}