{"record":{"id":"d76c95d22b4ac84c","repo":"apache/hadoop","slug":"pipeline-recovery-for-is-interrupted","errorCode":null,"errorMessage":"Pipeline recovery for {} is interrupted.","messagePattern":"Pipeline recovery for (.+?) is interrupted\\.","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java","lineNumber":3678,"sourceCode":"    //set visible length\n    b.setNumBytes(visible);\n\n    if (targets.length > 0) {\n      if (LOG.isDebugEnabled()) {\n        final String xferTargetsString =\n            StringUtils.join(\" \", Arrays.asList(targets));\n        LOG.debug(\"Transferring a replica to {}\", xferTargetsString);\n      }\n\n      final DataTransfer dataTransferTask = new DataTransfer(targets,\n          targetStorageTypes, targetStorageIds, b, stage, client);\n\n      @SuppressWarnings(\"unchecked\")\n      Future<Void> f = (Future<Void>) this.xferService.submit(dataTransferTask);\n      try {\n        f.get();\n      } catch (InterruptedException | ExecutionException e) {\n        throw new IOException(\"Pipeline recovery for \" + b + \" is interrupted.\",\n            e);\n      }\n    }\n  }\n\n  /**\n   * Finalize a pending upgrade in response to DNA_FINALIZE.\n   * @param blockPoolId the block pool to finalize\n   */\n  void finalizeUpgradeForPool(String blockPoolId) throws IOException {\n    storage.finalizeUpgrade(blockPoolId);\n  }\n\n  static InetSocketAddress getStreamingAddr(Configuration conf) {\n    return NetUtils.createSocketAddr(\n        conf.getTrimmed(DFS_DATANODE_ADDRESS_KEY, DFS_DATANODE_ADDRESS_DEFAULT));\n  }\n","sourceCodeStart":3660,"sourceCodeEnd":3696,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java#L3660-L3696","documentation":"Error \"Pipeline recovery for {} is interrupted.\" thrown in apache/hadoop.","triggerScenarios":"The thread performing pipeline recovery for a block is interrupted, typically during shutdown or when the client aborts the write.","commonSituations":"Pipeline recovery was interrupted, usually by DataNode shutdown or thread interruption. The client will retry; no action needed unless persistent.","solutions":["Treat as benign if caused by DataNode shutdown or job cancellation; the write will be retried by the client with a new pipeline.","If frequent, investigate what interrupts recovery threads (timeouts, premature shutdown) and review pipeline recovery timeouts."],"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"}