HDFS-15694. Avoid calling UpdateHeartBeatState inside DataNodeDescriptor. (#2487) Contributed by Kuhu Shukla and Ahmed Hussein

This commit is contained in:
Ahmed Hussein 2020-12-01 15:02:53 -06:00 committed by GitHub
parent 6a1d7d9ed2
commit 918ba9e82f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 5 deletions

View File

@ -237,7 +237,8 @@ public Type getType() {
*/ */
public DatanodeDescriptor(DatanodeID nodeID) { public DatanodeDescriptor(DatanodeID nodeID) {
super(nodeID); super(nodeID);
updateHeartbeatState(StorageReport.EMPTY_ARRAY, 0L, 0L, 0, 0, null); setLastUpdate(Time.now());
setLastUpdateMonotonic(Time.monotonicNow());
} }
/** /**
@ -248,7 +249,8 @@ public DatanodeDescriptor(DatanodeID nodeID) {
public DatanodeDescriptor(DatanodeID nodeID, public DatanodeDescriptor(DatanodeID nodeID,
String networkLocation) { String networkLocation) {
super(nodeID, networkLocation); super(nodeID, networkLocation);
updateHeartbeatState(StorageReport.EMPTY_ARRAY, 0L, 0L, 0, 0, null); setLastUpdate(Time.now());
setLastUpdateMonotonic(Time.monotonicNow());
} }
public CachedBlocksList getPendingCached() { public CachedBlocksList getPendingCached() {

View File

@ -19,6 +19,7 @@
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import java.util.ArrayList; import java.util.ArrayList;
@ -63,16 +64,16 @@ public void testBlocksCounter() throws Exception {
DatanodeStorageInfo[] storages = dd.getStorageInfos(); DatanodeStorageInfo[] storages = dd.getStorageInfos();
assertTrue(storages.length > 0); assertTrue(storages.length > 0);
// add first block // add first block
assertTrue(storages[0].addBlock(blk) == AddBlockResult.ADDED); assertEquals(AddBlockResult.ADDED, storages[0].addBlock(blk));
assertEquals(1, dd.numBlocks()); assertEquals(1, dd.numBlocks());
// remove a non-existent block // remove a non-existent block
assertFalse(BlocksMap.removeBlock(dd, blk1)); assertFalse(BlocksMap.removeBlock(dd, blk1));
assertEquals(1, dd.numBlocks()); assertEquals(1, dd.numBlocks());
// add an existent block // add an existent block
assertFalse(storages[0].addBlock(blk) == AddBlockResult.ADDED); assertNotEquals(AddBlockResult.ADDED, storages[0].addBlock(blk));
assertEquals(1, dd.numBlocks()); assertEquals(1, dd.numBlocks());
// add second block // add second block
assertTrue(storages[0].addBlock(blk1) == AddBlockResult.ADDED); assertEquals(AddBlockResult.ADDED, storages[0].addBlock(blk1));
assertEquals(2, dd.numBlocks()); assertEquals(2, dd.numBlocks());
// remove first block // remove first block
assertTrue(BlocksMap.removeBlock(dd, blk)); assertTrue(BlocksMap.removeBlock(dd, blk));