You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by wa...@apache.org on 2014/06/13 21:00:04 UTC
svn commit: r1602490 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
Author: wang
Date: Fri Jun 13 19:00:03 2014
New Revision: 1602490
URL: http://svn.apache.org/r1602490
Log:
HDFS-6470. TestBPOfferService.testBPInitErrorHandling is flaky. Contributed by Ming Ma.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1602490&r1=1602489&r2=1602490&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Fri Jun 13 19:00:03 2014
@@ -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)
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java?rev=1602490&r1=1602489&r2=1602490&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBPOfferService.java Fri Jun 13 19:00:03 2014
@@ -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();
}
@@ -409,7 +408,32 @@ 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 {