HDFS-7444. convertToBlockUnderConstruction should preserve BlockCollection. Contributed by Haohui Mai.
This commit is contained in:
parent
058af60c56
commit
f5b1631179
|
@ -498,6 +498,9 @@ Release 2.7.0 - UNRELEASED
|
||||||
HDFS-7097. Allow block reports to be processed during checkpointing on
|
HDFS-7097. Allow block reports to be processed during checkpointing on
|
||||||
standby name node. (kihwal via wang)
|
standby name node. (kihwal via wang)
|
||||||
|
|
||||||
|
HDFS-7444. convertToBlockUnderConstruction should preserve BlockCollection.
|
||||||
|
(wheat9)
|
||||||
|
|
||||||
Release 2.6.1 - UNRELEASED
|
Release 2.6.1 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -366,13 +366,16 @@ public class BlockInfo extends Block implements LightWeightGSet.LinkedElement {
|
||||||
public BlockInfoUnderConstruction convertToBlockUnderConstruction(
|
public BlockInfoUnderConstruction convertToBlockUnderConstruction(
|
||||||
BlockUCState s, DatanodeStorageInfo[] targets) {
|
BlockUCState s, DatanodeStorageInfo[] targets) {
|
||||||
if(isComplete()) {
|
if(isComplete()) {
|
||||||
return new BlockInfoUnderConstruction(this,
|
BlockInfoUnderConstruction ucBlock = new BlockInfoUnderConstruction(this,
|
||||||
getBlockCollection().getBlockReplication(), s, targets);
|
getBlockCollection().getBlockReplication(), s, targets);
|
||||||
|
ucBlock.setBlockCollection(getBlockCollection());
|
||||||
|
return ucBlock;
|
||||||
}
|
}
|
||||||
// the block is already under construction
|
// the block is already under construction
|
||||||
BlockInfoUnderConstruction ucBlock = (BlockInfoUnderConstruction)this;
|
BlockInfoUnderConstruction ucBlock = (BlockInfoUnderConstruction)this;
|
||||||
ucBlock.setBlockUCState(s);
|
ucBlock.setBlockUCState(s);
|
||||||
ucBlock.setExpectedLocations(targets);
|
ucBlock.setExpectedLocations(targets);
|
||||||
|
ucBlock.setBlockCollection(getBlockCollection());
|
||||||
return ucBlock;
|
return ucBlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,6 @@ public class INodeFile extends INodeWithAdditionalFields
|
||||||
BlockInfoUnderConstruction ucBlock =
|
BlockInfoUnderConstruction ucBlock =
|
||||||
lastBlock.convertToBlockUnderConstruction(
|
lastBlock.convertToBlockUnderConstruction(
|
||||||
BlockUCState.UNDER_CONSTRUCTION, locations);
|
BlockUCState.UNDER_CONSTRUCTION, locations);
|
||||||
ucBlock.setBlockCollection(this);
|
|
||||||
setBlock(numBlocks() - 1, ucBlock);
|
setBlock(numBlocks() - 1, ucBlock);
|
||||||
return ucBlock;
|
return ucBlock;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1226,6 +1226,15 @@ public class TestReplicationPolicy {
|
||||||
final BlockInfoUnderConstruction ucBlock =
|
final BlockInfoUnderConstruction ucBlock =
|
||||||
info.convertToBlockUnderConstruction(BlockUCState.UNDER_CONSTRUCTION,
|
info.convertToBlockUnderConstruction(BlockUCState.UNDER_CONSTRUCTION,
|
||||||
storageAry);
|
storageAry);
|
||||||
|
DatanodeStorageInfo storage = mock(DatanodeStorageInfo.class);
|
||||||
|
DatanodeDescriptor dn = mock(DatanodeDescriptor.class);
|
||||||
|
when(dn.isDecommissioned()).thenReturn(true);
|
||||||
|
when(storage.getState()).thenReturn(DatanodeStorage.State.NORMAL);
|
||||||
|
when(storage.getDatanodeDescriptor()).thenReturn(dn);
|
||||||
|
when(storage.removeBlock(any(BlockInfo.class))).thenReturn(true);
|
||||||
|
when(storage.addBlock(any(BlockInfo.class))).thenReturn(true);
|
||||||
|
ucBlock.addStorage(storage);
|
||||||
|
|
||||||
when(mbc.setLastBlock((BlockInfo) any(), (DatanodeStorageInfo[]) any()))
|
when(mbc.setLastBlock((BlockInfo) any(), (DatanodeStorageInfo[]) any()))
|
||||||
.thenReturn(ucBlock);
|
.thenReturn(ucBlock);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue