HDFS-15092. TestRedudantBlocks#testProcessOverReplicatedAndRedudantBlock sometimes fails. Contributed by Fei Hui.

(cherry picked from commit 8cfc3673dc)
(cherry picked from commit 86028d975c)
This commit is contained in:
Inigo Goiri 2020-01-21 13:29:20 -08:00 committed by Akira Ajisaka
parent 91acb7b9fe
commit 1f55483339
No known key found for this signature in database
GPG Key ID: C1EDBB9CA400FD50
1 changed files with 13 additions and 3 deletions

View File

@ -35,8 +35,10 @@ import org.apache.hadoop.hdfs.protocol.LocatedBlock;
import org.apache.hadoop.hdfs.protocol.LocatedBlocks;
import org.apache.hadoop.hdfs.protocol.LocatedStripedBlock;
import org.apache.hadoop.hdfs.protocol.SystemErasureCodingPolicies;
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoStriped;
import org.apache.hadoop.hdfs.server.datanode.SimulatedFSDataset;
import org.apache.hadoop.hdfs.util.StripedBlockUtil;
import org.apache.hadoop.test.GenericTestUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@ -108,18 +110,26 @@ public class TestRedudantBlocks {
blk.setBlockId(groupId + 2);
cluster.injectBlocks(i, Arrays.asList(blk), bpid);
BlockInfoStriped blockInfo =
(BlockInfoStriped)cluster.getNamesystem().getBlockManager()
.getStoredBlock(new Block(groupId));
// update blocksMap
cluster.triggerBlockReports();
// delete redundant block
cluster.triggerHeartbeats();
//wait for IBR
Thread.sleep(1100);
GenericTestUtils.waitFor(
() -> cluster.getNamesystem().getBlockManager()
.countNodes(blockInfo).liveReplicas() >= groupSize -1,
500, 10000);
// trigger reconstruction
cluster.triggerHeartbeats();
//wait for IBR
Thread.sleep(1100);
GenericTestUtils.waitFor(
() -> cluster.getNamesystem().getBlockManager()
.countNodes(blockInfo).liveReplicas() >= groupSize,
500, 10000);
HashSet<Long> blockIdsSet = new HashSet<Long>();