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

This commit is contained in:
Inigo Goiri 2020-01-21 13:29:20 -08:00
parent b657822b98
commit 8cfc3673dc
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.LocatedBlocks;
import org.apache.hadoop.hdfs.protocol.LocatedStripedBlock; import org.apache.hadoop.hdfs.protocol.LocatedStripedBlock;
import org.apache.hadoop.hdfs.protocol.SystemErasureCodingPolicies; 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.server.datanode.SimulatedFSDataset;
import org.apache.hadoop.hdfs.util.StripedBlockUtil; import org.apache.hadoop.hdfs.util.StripedBlockUtil;
import org.apache.hadoop.test.GenericTestUtils;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@ -108,18 +110,26 @@ public class TestRedudantBlocks {
blk.setBlockId(groupId + 2); blk.setBlockId(groupId + 2);
cluster.injectBlocks(i, Arrays.asList(blk), bpid); cluster.injectBlocks(i, Arrays.asList(blk), bpid);
BlockInfoStriped blockInfo =
(BlockInfoStriped)cluster.getNamesystem().getBlockManager()
.getStoredBlock(new Block(groupId));
// update blocksMap // update blocksMap
cluster.triggerBlockReports(); cluster.triggerBlockReports();
// delete redundant block // delete redundant block
cluster.triggerHeartbeats(); cluster.triggerHeartbeats();
//wait for IBR //wait for IBR
Thread.sleep(1100); GenericTestUtils.waitFor(
() -> cluster.getNamesystem().getBlockManager()
.countNodes(blockInfo).liveReplicas() >= groupSize -1,
500, 10000);
// trigger reconstruction // trigger reconstruction
cluster.triggerHeartbeats(); cluster.triggerHeartbeats();
//wait for IBR //wait for IBR
Thread.sleep(1100); GenericTestUtils.waitFor(
() -> cluster.getNamesystem().getBlockManager()
.countNodes(blockInfo).liveReplicas() >= groupSize,
500, 10000);
HashSet<Long> blockIdsSet = new HashSet<Long>(); HashSet<Long> blockIdsSet = new HashSet<Long>();