{"record":{"id":"90e69d0d8878d816","repo":"apache/hadoop","slug":"transfer-failed-for-all-targets","errorCode":null,"errorMessage":"Transfer failed for all targets.","messagePattern":"Transfer failed for all targets\\.","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedBlockReconstructor.java","lineNumber":118,"sourceCode":"        getDatanode().getEcReconstuctReadThrottler().throttle(bytesToRead);\n      }\n      // step1: read from minimum source DNs required for reconstruction.\n      // The returned success list is the source DNs we do real read from\n      getStripedReader().readMinimumSources(toReconstructLen);\n      long readEnd = Time.monotonicNow();\n\n      // step2: decode to reconstruct targets\n      reconstructTargets(toReconstructLen);\n      long decodeEnd = Time.monotonicNow();\n\n      // step3: transfer data\n      long bytesToWrite = (long) toReconstructLen * stripedWriter.getTargets();\n      if (getDatanode().getEcReconstuctWriteThrottler() != null) {\n        getDatanode().getEcReconstuctWriteThrottler().throttle(bytesToWrite);\n      }\n      if (stripedWriter.transferData2Targets() == 0) {\n        String error = \"Transfer failed for all targets.\";\n        throw new IOException(error);\n      }\n      long writeEnd = Time.monotonicNow();\n\n      // Only the succeed reconstructions are recorded.\n      final DataNodeMetrics metrics = getDatanode().getMetrics();\n      metrics.incrECReconstructionReadTime(readEnd - start);\n      metrics.incrECReconstructionDecodingTime(decodeEnd - readEnd);\n      metrics.incrECReconstructionWriteTime(writeEnd - decodeEnd);\n\n      updatePositionInBlock(toReconstructLen);\n\n      clearBuffers();\n    }\n  }\n\n  private void reconstructTargets(int toReconstructLen) throws IOException {\n    ByteBuffer[] inputs = getStripedReader().getInputBuffers(toReconstructLen);\n","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedBlockReconstructor.java#L100-L136","documentation":"Error \"Transfer failed for all targets.\" thrown in apache/hadoop.","triggerScenarios":"Erasure-coding striped block reconstruction when the transfer to every target DataNode fails, typically due to network faults or unavailable target nodes.","commonSituations":"See trigger scenarios.","solutions":["Check network connectivity and DataNode health for every striped-write target; restart or decommission unreachable DataNodes.","Inspect target DataNode logs for disk or volume failures and repair the underlying storage.","Retry the block reconstruction after the cluster recovers; if failures persist, verify enough DataNodes are live for the EC policy in use."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}