HDFS-14021. TestReconstructStripedBlocksWithRackAwareness#testReconstructForNotEnoughRacks fails intermittently. Contributed by Xiao Chen.
This commit is contained in:
parent
bbc6dcd3d0
commit
c1874046e2
@ -162,7 +162,9 @@ public void testReconstructForNotEnoughRacks() throws Exception {
|
|||||||
// the file's block is in 9 dn but 5 racks
|
// the file's block is in 9 dn but 5 racks
|
||||||
DFSTestUtil.createFile(fs, file,
|
DFSTestUtil.createFile(fs, file,
|
||||||
cellSize * dataBlocks * 2, (short) 1, 0L);
|
cellSize * dataBlocks * 2, (short) 1, 0L);
|
||||||
Assert.assertEquals(0, bm.numOfUnderReplicatedBlocks());
|
GenericTestUtils.waitFor(() ->
|
||||||
|
bm.numOfUnderReplicatedBlocks() == 0, 100, 30000);
|
||||||
|
LOG.info("Created file {}", file);
|
||||||
|
|
||||||
final INodeFile fileNode = fsn.getFSDirectory()
|
final INodeFile fileNode = fsn.getFSDirectory()
|
||||||
.getINode4Write(file.toString()).asFile();
|
.getINode4Write(file.toString()).asFile();
|
||||||
@ -173,7 +175,8 @@ public void testReconstructForNotEnoughRacks() throws Exception {
|
|||||||
for (DatanodeStorageInfo storage : blockInfo.storages) {
|
for (DatanodeStorageInfo storage : blockInfo.storages) {
|
||||||
rackSet.add(storage.getDatanodeDescriptor().getNetworkLocation());
|
rackSet.add(storage.getDatanodeDescriptor().getNetworkLocation());
|
||||||
}
|
}
|
||||||
Assert.assertEquals(dataBlocks - 1, rackSet.size());
|
Assert.assertEquals("rackSet size is wrong: " + rackSet, dataBlocks - 1,
|
||||||
|
rackSet.size());
|
||||||
|
|
||||||
// restart the stopped datanode
|
// restart the stopped datanode
|
||||||
cluster.restartDataNode(lastHost);
|
cluster.restartDataNode(lastHost);
|
||||||
@ -181,6 +184,7 @@ public void testReconstructForNotEnoughRacks() throws Exception {
|
|||||||
|
|
||||||
// make sure we have 6 racks again
|
// make sure we have 6 racks again
|
||||||
NetworkTopology topology = bm.getDatanodeManager().getNetworkTopology();
|
NetworkTopology topology = bm.getDatanodeManager().getNetworkTopology();
|
||||||
|
LOG.info("topology is: {}", topology);
|
||||||
Assert.assertEquals(hosts.length, topology.getNumOfLeaves());
|
Assert.assertEquals(hosts.length, topology.getNumOfLeaves());
|
||||||
Assert.assertEquals(dataBlocks, topology.getNumOfRacks());
|
Assert.assertEquals(dataBlocks, topology.getNumOfRacks());
|
||||||
|
|
||||||
@ -202,7 +206,8 @@ public void testReconstructForNotEnoughRacks() throws Exception {
|
|||||||
for (DatanodeStorageInfo storage : blockInfo.storages) {
|
for (DatanodeStorageInfo storage : blockInfo.storages) {
|
||||||
if (storage != null) {
|
if (storage != null) {
|
||||||
DatanodeDescriptor dn = storage.getDatanodeDescriptor();
|
DatanodeDescriptor dn = storage.getDatanodeDescriptor();
|
||||||
Assert.assertEquals(0, dn.getNumberOfBlocksToBeErasureCoded());
|
Assert.assertEquals("Block to be erasure coded is wrong for datanode:"
|
||||||
|
+ dn, 0, dn.getNumberOfBlocksToBeErasureCoded());
|
||||||
if (dn.getNumberOfBlocksToBeReplicated() == 1) {
|
if (dn.getNumberOfBlocksToBeReplicated() == 1) {
|
||||||
scheduled = true;
|
scheduled = true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user