HDFS-10641. TestBlockManager#testBlockReportQueueing fails intermittently. (Contributed by Daryn Sharp)

This commit is contained in:
Mingliang Liu 2016-08-15 20:28:40 -07:00
parent 23161c67cf
commit 2f4660ce98
1 changed files with 6 additions and 2 deletions

View File

@ -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<Void>(){
@Override
public Void call() throws IOException {
return bm.runBlockOp(new Callable<Void>() {
bm.runBlockOp(new Callable<Void>() {
@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();
}