HDFS-7366. BlockInfo should take replication as an short in the constructor. Contributed by Li Lu.
This commit is contained in:
parent
8a261e68e4
commit
86eb27ba1d
@ -397,6 +397,9 @@ Release 2.7.0 - UNRELEASED
|
||||
HDFS-7324. haadmin command usage prints incorrect command name.
|
||||
(Brahma Reddy Battula via suresh)
|
||||
|
||||
HDFS-7366. BlockInfo should take replication as an short in the constructor.
|
||||
(Li Lu via wheat9)
|
||||
|
||||
Release 2.6.0 - UNRELEASED
|
||||
|
||||
INCOMPATIBLE CHANGES
|
||||
|
@ -56,12 +56,12 @@ public class BlockInfo extends Block implements LightWeightGSet.LinkedElement {
|
||||
* Construct an entry for blocksmap
|
||||
* @param replication the block's replication factor
|
||||
*/
|
||||
public BlockInfo(int replication) {
|
||||
public BlockInfo(short replication) {
|
||||
this.triplets = new Object[3*replication];
|
||||
this.bc = null;
|
||||
}
|
||||
|
||||
public BlockInfo(Block blk, int replication) {
|
||||
public BlockInfo(Block blk, short replication) {
|
||||
super(blk);
|
||||
this.triplets = new Object[3*replication];
|
||||
this.bc = null;
|
||||
|
@ -153,14 +153,14 @@ public void appendStringTo(StringBuilder sb) {
|
||||
* Create block and set its state to
|
||||
* {@link BlockUCState#UNDER_CONSTRUCTION}.
|
||||
*/
|
||||
public BlockInfoUnderConstruction(Block blk, int replication) {
|
||||
public BlockInfoUnderConstruction(Block blk, short replication) {
|
||||
this(blk, replication, BlockUCState.UNDER_CONSTRUCTION, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a block that is currently being constructed.
|
||||
*/
|
||||
public BlockInfoUnderConstruction(Block blk, int replication,
|
||||
public BlockInfoUnderConstruction(Block blk, short replication,
|
||||
BlockUCState state,
|
||||
DatanodeStorageInfo[] targets) {
|
||||
super(blk, replication);
|
||||
|
@ -1987,7 +1987,7 @@ private void reportDiff(DatanodeStorageInfo storageInfo,
|
||||
|
||||
// place a delimiter in the list which separates blocks
|
||||
// that have been reported from those that have not
|
||||
BlockInfo delimiter = new BlockInfo(new Block(), 1);
|
||||
BlockInfo delimiter = new BlockInfo(new Block(), (short) 1);
|
||||
boolean added = storageInfo.addBlock(delimiter);
|
||||
assert added : "Delimiting block cannot be present in the node";
|
||||
int headIndex = 0; //currently the delimiter is in the head of the list
|
||||
|
@ -48,7 +48,7 @@ public class TestBlockInfo {
|
||||
|
||||
@Test
|
||||
public void testAddStorage() throws Exception {
|
||||
BlockInfo blockInfo = new BlockInfo(3);
|
||||
BlockInfo blockInfo = new BlockInfo((short) 3);
|
||||
|
||||
final DatanodeStorageInfo storage = DFSTestUtil.createDatanodeStorageInfo("storageID", "127.0.0.1");
|
||||
|
||||
@ -70,7 +70,7 @@ public void testReplaceStorage() throws Exception {
|
||||
|
||||
// Create a few dummy blocks and add them to the first storage.
|
||||
for (int i = 0; i < NUM_BLOCKS; ++i) {
|
||||
blockInfos[i] = new BlockInfo(3);
|
||||
blockInfos[i] = new BlockInfo((short) 3);
|
||||
storage1.addBlock(blockInfos[i]);
|
||||
}
|
||||
|
||||
@ -95,7 +95,7 @@ public void testBlockListMoveToHead() throws Exception {
|
||||
LOG.info("Building block list...");
|
||||
for (int i = 0; i < MAX_BLOCKS; i++) {
|
||||
blockList.add(new Block(i, 0, GenerationStamp.LAST_RESERVED_STAMP));
|
||||
blockInfoList.add(new BlockInfo(blockList.get(i), 3));
|
||||
blockInfoList.add(new BlockInfo(blockList.get(i), (short) 3));
|
||||
dd.addBlock(blockInfoList.get(i));
|
||||
|
||||
// index of the datanode should be 0
|
||||
|
@ -41,7 +41,7 @@ public void testInitializeBlockRecovery() throws Exception {
|
||||
dd1.isAlive = dd2.isAlive = dd3.isAlive = true;
|
||||
BlockInfoUnderConstruction blockInfo = new BlockInfoUnderConstruction(
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP),
|
||||
3,
|
||||
(short) 3,
|
||||
BlockUCState.UNDER_CONSTRUCTION,
|
||||
new DatanodeStorageInfo[] {s1, s2, s3});
|
||||
|
||||
|
@ -385,7 +385,7 @@ private void fulfillPipeline(BlockInfo blockInfo,
|
||||
|
||||
private BlockInfo blockOnNodes(long blkId, List<DatanodeDescriptor> nodes) {
|
||||
Block block = new Block(blkId);
|
||||
BlockInfo blockInfo = new BlockInfo(block, 3);
|
||||
BlockInfo blockInfo = new BlockInfo(block, (short) 3);
|
||||
|
||||
for (DatanodeDescriptor dn : nodes) {
|
||||
for (DatanodeStorageInfo storage : dn.getStorageInfos()) {
|
||||
|
@ -57,8 +57,8 @@ public void testGetInvalidateBlocks() throws Exception {
|
||||
public void testBlocksCounter() throws Exception {
|
||||
DatanodeDescriptor dd = BlockManagerTestUtil.getLocalDatanodeDescriptor(true);
|
||||
assertEquals(0, dd.numBlocks());
|
||||
BlockInfo blk = new BlockInfo(new Block(1L), 1);
|
||||
BlockInfo blk1 = new BlockInfo(new Block(2L), 2);
|
||||
BlockInfo blk = new BlockInfo(new Block(1L), (short) 1);
|
||||
BlockInfo blk1 = new BlockInfo(new Block(2L), (short) 2);
|
||||
DatanodeStorageInfo[] storages = dd.getStorageInfos();
|
||||
assertTrue(storages.length > 0);
|
||||
final String storageID = storages[0].getStorageID();
|
||||
|
@ -172,7 +172,7 @@ public void testHeartbeatBlockRecovery() throws Exception {
|
||||
dd2.getStorageInfos()[0],
|
||||
dd3.getStorageInfos()[0]};
|
||||
BlockInfoUnderConstruction blockInfo = new BlockInfoUnderConstruction(
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), 3,
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), (short) 3,
|
||||
BlockUCState.UNDER_RECOVERY, storages);
|
||||
dd1.addBlockToBeRecovered(blockInfo);
|
||||
DatanodeCommand[] cmds =
|
||||
@ -194,7 +194,7 @@ public void testHeartbeatBlockRecovery() throws Exception {
|
||||
dd2.setLastUpdate(System.currentTimeMillis() - 40 * 1000);
|
||||
dd3.setLastUpdate(System.currentTimeMillis());
|
||||
blockInfo = new BlockInfoUnderConstruction(
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), 3,
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), (short) 3,
|
||||
BlockUCState.UNDER_RECOVERY, storages);
|
||||
dd1.addBlockToBeRecovered(blockInfo);
|
||||
cmds = NameNodeAdapter.sendHeartBeat(nodeReg1, dd1, namesystem).getCommands();
|
||||
@ -215,7 +215,7 @@ public void testHeartbeatBlockRecovery() throws Exception {
|
||||
dd2.setLastUpdate(System.currentTimeMillis() - 40 * 1000);
|
||||
dd3.setLastUpdate(System.currentTimeMillis() - 80 * 1000);
|
||||
blockInfo = new BlockInfoUnderConstruction(
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), 3,
|
||||
new Block(0, 0, GenerationStamp.LAST_RESERVED_STAMP), (short) 3,
|
||||
BlockUCState.UNDER_RECOVERY, storages);
|
||||
dd1.addBlockToBeRecovered(blockInfo);
|
||||
cmds = NameNodeAdapter.sendHeartBeat(nodeReg1, dd1, namesystem).getCommands();
|
||||
|
@ -1170,7 +1170,7 @@ public void testAddStoredBlockDoesNotCauseSkippedReplication()
|
||||
// block under construction, the BlockManager will realize the expected
|
||||
// replication has been achieved and remove it from the under-replicated
|
||||
// queue.
|
||||
BlockInfoUnderConstruction info = new BlockInfoUnderConstruction(block1, 1);
|
||||
BlockInfoUnderConstruction info = new BlockInfoUnderConstruction(block1, (short) 1);
|
||||
BlockCollection bc = mock(BlockCollection.class);
|
||||
when(bc.getBlockReplication()).thenReturn((short)1);
|
||||
bm.addBlockCollection(info, bc);
|
||||
@ -1214,7 +1214,7 @@ public void testAddStoredBlockDoesNotCauseSkippedReplication()
|
||||
chosenBlocks = underReplicatedBlocks.chooseUnderReplicatedBlocks(1);
|
||||
assertTheChosenBlocks(chosenBlocks, 1, 0, 0, 0, 0);
|
||||
|
||||
final BlockInfo info = new BlockInfo(block1, 1);
|
||||
final BlockInfo info = new BlockInfo(block1, (short) 1);
|
||||
final BlockCollection mbc = mock(BlockCollection.class);
|
||||
when(mbc.getLastBlock()).thenReturn(info);
|
||||
when(mbc.getPreferredBlockSize()).thenReturn(block1.getNumBytes() + 1);
|
||||
|
@ -63,7 +63,7 @@ private FSNamesystem makeNameSystemSpy(Block block, INodeFile file)
|
||||
|
||||
FSNamesystem namesystemSpy = spy(namesystem);
|
||||
BlockInfoUnderConstruction blockInfo = new BlockInfoUnderConstruction(
|
||||
block, 1, HdfsServerConstants.BlockUCState.UNDER_CONSTRUCTION, targets);
|
||||
block, (short) 1, HdfsServerConstants.BlockUCState.UNDER_CONSTRUCTION, targets);
|
||||
blockInfo.setBlockCollection(file);
|
||||
blockInfo.setGenerationStamp(genStamp);
|
||||
blockInfo.initializeBlockRecovery(genStamp);
|
||||
@ -100,7 +100,7 @@ public void testCommitBlockSynchronization() throws IOException {
|
||||
lastBlock, genStamp, length, false, false, newTargets, null);
|
||||
|
||||
// Simulate 'completing' the block.
|
||||
BlockInfo completedBlockInfo = new BlockInfo(block, 1);
|
||||
BlockInfo completedBlockInfo = new BlockInfo(block, (short) 1);
|
||||
completedBlockInfo.setBlockCollection(file);
|
||||
completedBlockInfo.setGenerationStamp(genStamp);
|
||||
doReturn(completedBlockInfo).when(namesystemSpy)
|
||||
@ -171,7 +171,7 @@ public void testCommitBlockSynchronizationWithClose() throws IOException {
|
||||
namesystemSpy.commitBlockSynchronization(
|
||||
lastBlock, genStamp, length, true, false, newTargets, null);
|
||||
|
||||
BlockInfo completedBlockInfo = new BlockInfo(block, 1);
|
||||
BlockInfo completedBlockInfo = new BlockInfo(block, (short) 1);
|
||||
completedBlockInfo.setBlockCollection(file);
|
||||
completedBlockInfo.setGenerationStamp(genStamp);
|
||||
doReturn(completedBlockInfo).when(namesystemSpy)
|
||||
|
Loading…
Reference in New Issue
Block a user