diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java index 5d0ca96de3f..cc0fafd4473 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/blockmanagement/TestBlockManager.java @@ -945,6 +945,7 @@ public class TestBlockManager { final CyclicBarrier startBarrier = new CyclicBarrier(2); final CountDownLatch endLatch = new CountDownLatch(3); + final CountDownLatch doneLatch = new CountDownLatch(1); // create a task intended to block while processing, thus causing // the queue to backup. simulates how a full BR is processed. @@ -952,7 +953,7 @@ public class TestBlockManager { new Callable(){ @Override public Void call() throws IOException { - return bm.runBlockOp(new Callable() { + bm.runBlockOp(new Callable() { @Override public Void call() throws InterruptedException, BrokenBarrierException { @@ -962,6 +963,9 @@ public class TestBlockManager { return null; } }); + // signal that runBlockOp returned + doneLatch.countDown(); + return null; } }); @@ -1006,7 +1010,7 @@ public class TestBlockManager { startBarrier.await(1, TimeUnit.SECONDS); assertTrue(endLatch.await(1, TimeUnit.SECONDS)); assertEquals(0, bm.getBlockOpQueueLength()); - assertTrue(blockingOp.isDone()); + assertTrue(doneLatch.await(1, TimeUnit.SECONDS)); } finally { cluster.shutdown(); }