This is an automated email from the ASF dual-hosted git repository.
ferhui 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 7ef2875 HDFS-15798. EC: Reconstruct task failed, and It would be
XmitsInProgress of DN has negative number. Contributed by huhaiyang
7ef2875 is described below
commit 7ef2875c8932c54ced1f0d4b892a54d22d7cfaf3
Author: fermi <[email protected]>
AuthorDate: Fri Feb 5 11:01:49 2021 +0800
HDFS-15798. EC: Reconstruct task failed, and It would be XmitsInProgress of
DN has negative number. Contributed by huhaiyang
---
.../hdfs/server/datanode/erasurecode/ErasureCodingWorker.java | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java
index 03cddb2..9fb5d9e 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java
@@ -121,7 +121,6 @@ public final class ErasureCodingWorker {
public void processErasureCodingTasks(
Collection<BlockECReconstructionInfo> ecTasks) {
for (BlockECReconstructionInfo reconInfo : ecTasks) {
- int xmitsSubmitted = 0;
try {
StripedReconstructionInfo stripedReconInfo =
new StripedReconstructionInfo(
@@ -134,20 +133,19 @@ public final class ErasureCodingWorker {
final StripedBlockReconstructor task =
new StripedBlockReconstructor(this, stripedReconInfo);
if (task.hasValidTargets()) {
+ stripedReconstructionPool.submit(task);
// See HDFS-12044. We increase xmitsInProgress even the task is only
// enqueued, so that
// 1) NN will not send more tasks than what DN can execute and
// 2) DN will not throw away reconstruction tasks, and instead
keeps
// an unbounded number of tasks in the executor's task queue.
- xmitsSubmitted = Math.max((int)(task.getXmits() * xmitWeight), 1);
+ int xmitsSubmitted = Math.max((int)(task.getXmits() * xmitWeight),
1);
getDatanode().incrementXmitsInProcess(xmitsSubmitted);
- stripedReconstructionPool.submit(task);
} else {
LOG.warn("No missing internal block. Skip reconstruction for
task:{}",
reconInfo);
}
} catch (Throwable e) {
- getDatanode().decrementXmitsInProgress(xmitsSubmitted);
LOG.warn("Failed to reconstruct striped block {}",
reconInfo.getExtendedBlock().getLocalBlock(), e);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]