HDFS-6470. TestBPOfferService.testBPInitErrorHandling is flaky. Contributed by Ming Ma.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1602490 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
02f3ff3387
commit
70db2ec417
|
@ -437,6 +437,9 @@ Release 2.5.0 - UNRELEASED
|
|||
|
||||
HDFS-6330. Move mkdirs() to FSNamesystem. (wheat9)
|
||||
|
||||
HDFS-6470. TestBPOfferService.testBPInitErrorHandling is flaky.
|
||||
(Ming Ma via wang)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
HDFS-6214. Webhdfs has poor throughput for files >2GB (daryn)
|
||||
|
|
|
@ -325,15 +325,14 @@ public class TestBPOfferService {
|
|||
}
|
||||
}).when(mockDn).initBlockPool(Mockito.any(BPOfferService.class));
|
||||
BPOfferService bpos = setupBPOSForNNs(mockDn, mockNN1, mockNN2);
|
||||
List<BPServiceActor> actors = bpos.getBPServiceActors();
|
||||
assertEquals(2, actors.size());
|
||||
bpos.start();
|
||||
try {
|
||||
waitForInitialization(bpos);
|
||||
List<BPServiceActor> actors = bpos.getBPServiceActors();
|
||||
// even if one of the actor initialization fails also other will be
|
||||
// running until both failed.
|
||||
assertEquals(2, actors.size());
|
||||
BPServiceActor actor = actors.get(0);
|
||||
waitForBlockReport(actor.getNameNodeProxy());
|
||||
// even if one of the actor initialization fails, the other one will be
|
||||
// finish block report.
|
||||
waitForBlockReport(mockNN1, mockNN2);
|
||||
} finally {
|
||||
bpos.stop();
|
||||
}
|
||||
|
@ -410,6 +409,31 @@ public class TestBPOfferService {
|
|||
}, 500, 10000);
|
||||
}
|
||||
|
||||
private void waitForBlockReport(
|
||||
final DatanodeProtocolClientSideTranslatorPB mockNN1,
|
||||
final DatanodeProtocolClientSideTranslatorPB mockNN2)
|
||||
throws Exception {
|
||||
GenericTestUtils.waitFor(new Supplier<Boolean>() {
|
||||
@Override
|
||||
public Boolean get() {
|
||||
return get(mockNN1) || get(mockNN2);
|
||||
}
|
||||
|
||||
private Boolean get(DatanodeProtocolClientSideTranslatorPB mockNN) {
|
||||
try {
|
||||
Mockito.verify(mockNN).blockReport(
|
||||
Mockito.<DatanodeRegistration>anyObject(),
|
||||
Mockito.eq(FAKE_BPID),
|
||||
Mockito.<StorageBlockReport[]>anyObject());
|
||||
return true;
|
||||
} catch (Throwable t) {
|
||||
LOG.info("waiting on block report: " + t.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}, 500, 10000);
|
||||
}
|
||||
|
||||
private ReceivedDeletedBlockInfo[] waitForBlockReceived(
|
||||
ExtendedBlock fakeBlock,
|
||||
DatanodeProtocolClientSideTranslatorPB mockNN) throws Exception {
|
||||
|
|
Loading…
Reference in New Issue