diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java index 5042329..1a9010d 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/ProcedureExecutor.java @@ -615,9 +615,10 @@ public class ProcedureExecutor { /** * Remove a chore procedure from the executor * @param chore the chore to remove + * @return whether the chore is removed */ - public void removeChore(final ProcedureInMemoryChore chore) { - waitingTimeout.remove(chore); + public boolean removeChore(final ProcedureInMemoryChore chore) { + return waitingTimeout.remove(chore); } /** diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/util/TimeoutBlockingQueue.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/util/TimeoutBlockingQueue.java index fceabb1..2292e63 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/util/TimeoutBlockingQueue.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/util/TimeoutBlockingQueue.java @@ -92,15 +92,17 @@ public class TimeoutBlockingQueue { } } - public void remove(E e) { + public boolean remove(E e) { + if (e == null) return false; lock.lock(); try { for (int i = 0; i < objects.length; ++i) { - if (objects[i] == e) { + if (e.equals(objects[i])) { objects[i] = null; - return; + return true; } } + return false; } finally { lock.unlock(); } diff --git a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureInMemoryChore.java b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureInMemoryChore.java index 32e3e8c..23b6900 100644 --- a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureInMemoryChore.java +++ b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/TestProcedureInMemoryChore.java @@ -79,7 +79,7 @@ public class TestProcedureInMemoryChore { latch.await(); // remove the chore and verify it is no longer executed - procExecutor.removeChore(chore); + LOG.debug("chore removed: " + procExecutor.removeChore(chore)); latch = new CountDownLatch(nCountDown); chore.setLatch(latch); latch.await(timeoutMSec * nCountDown, TimeUnit.MILLISECONDS); @@ -101,6 +101,7 @@ public class TestProcedureInMemoryChore { @Override protected void periodicExecute(final TestProcEnv env) { + LOG.debug("counting down"); latch.countDown(); } }