HDFS-10453. ReplicationMonitor thread could stuck for long time due to the race between replication and delete of same file in a large cluster.. Contributed by He Xiaoqiao.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/02f6030b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/02f6030b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/02f6030b Branch: refs/heads/branch-2.7 Commit: 02f6030b35999f2f741a8c4b9363ee59f36f7e28 Parents: 53a72f6 Author: Arpit Agarwal <a...@apache.org> Authored: Mon Feb 12 07:09:54 2018 -0800 Committer: Arpit Agarwal <a...@apache.org> Committed: Mon Feb 12 07:09:54 2018 -0800 ---------------------------------------------------------------------- .../apache/hadoop/hdfs/server/blockmanagement/BlockManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/02f6030b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java index 57fda98..797215c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java @@ -3707,6 +3707,7 @@ public class BlockManager { private static class ReplicationWork { private final Block block; private final String srcPath; + private final long blockSize; private final byte storagePolicyID; private final DatanodeDescriptor srcNode; private final int additionalReplRequired; @@ -3724,6 +3725,7 @@ public class BlockManager { int priority) { this.block = block; this.srcPath = bc.getName(); + this.blockSize = block.getNumBytes(); this.storagePolicyID = bc.getStoragePolicyID(); this.srcNode = srcNode; this.srcNode.incrementPendingReplicationWithoutTargets(); @@ -3740,7 +3742,7 @@ public class BlockManager { try { targets = blockplacement.chooseTarget(getSrcPath(), additionalReplRequired, srcNode, liveReplicaStorages, false, - excludedNodes, block.getNumBytes(), + excludedNodes, blockSize, storagePolicySuite.getPolicy(getStoragePolicyID())); } finally { srcNode.decrementPendingReplicationWithoutTargets(); --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org