This is an automated email from the ASF dual-hosted git repository. surendralilhore pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push: new 320008b HDFS-14720. DataNode shouldn't report block as bad block if the block length is Long.MAX_VALUE. Contributed by hemanthboyina. 320008b is described below commit 320008bb7cc558b1300398178bd2f48cbf0b6c80 Author: Surendra Singh Lilhore <surendralilh...@apache.org> AuthorDate: Sat Nov 9 22:14:35 2019 +0530 HDFS-14720. DataNode shouldn't report block as bad block if the block length is Long.MAX_VALUE. Contributed by hemanthboyina. --- .../hdfs/server/blockmanagement/ReplicationWork.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/ReplicationWork.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/ReplicationWork.java index 5e10ebe..771751f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/ReplicationWork.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/ReplicationWork.java @@ -17,6 +17,7 @@ */ package org.apache.hadoop.hdfs.server.blockmanagement; +import org.apache.hadoop.hdfs.server.protocol.BlockCommand; import org.apache.hadoop.net.Node; import java.util.List; @@ -42,10 +43,16 @@ class ReplicationWork extends BlockReconstructionWork { assert getSrcNodes().length > 0 : "At least 1 source node should have been selected"; try { - DatanodeStorageInfo[] chosenTargets = blockplacement.chooseTarget( - getSrcPath(), getAdditionalReplRequired(), getSrcNodes()[0], - getLiveReplicaStorages(), false, excludedNodes, getBlockSize(), - storagePolicySuite.getPolicy(getStoragePolicyID()), null); + DatanodeStorageInfo[] chosenTargets = null; + // HDFS-14720 If the block is deleted, the block size will become + // BlockCommand.NO_ACK (LONG.MAX_VALUE) . This kind of block we don't need + // to send for replication or reconstruction + if (getBlock().getNumBytes() != BlockCommand.NO_ACK) { + chosenTargets = blockplacement.chooseTarget(getSrcPath(), + getAdditionalReplRequired(), getSrcNodes()[0], + getLiveReplicaStorages(), false, excludedNodes, getBlockSize(), + storagePolicySuite.getPolicy(getStoragePolicyID()), null); + } setTargets(chosenTargets); } finally { getSrcNodes()[0].decrementPendingReplicationWithoutTargets(); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org