{"record":{"id":"be9fc254a052411c","repo":"apache/hadoop","slug":"receive-reply-from-slownode-for-continuous-t","errorCode":null,"errorMessage":"Receive reply from slowNode {} for continuous {} times, treating it as badNode","messagePattern":"Receive reply from slowNode (.+?) for continuous (.+?) times, treating it as badNode","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DataStreamer.java","lineNumber":1338,"sourceCode":"          slowNodeMap.put(slowNode, 1);\n        } else {\n          int oldCount = slowNodeMap.get(slowNode);\n          slowNodeMap.put(slowNode, ++oldCount);\n        }\n        discontinuousNodes.remove(slowNode);\n      }\n      for (DatanodeInfo discontinuousNode : discontinuousNodes) {\n        slowNodeMap.remove(discontinuousNode);\n      }\n\n      if (!slowNodeMap.isEmpty()) {\n        for (Map.Entry<DatanodeInfo, Integer> entry : slowNodeMap.entrySet()) {\n          if (entry.getValue() >= markSlowNodeAsBadNodeThreshold) {\n            DatanodeInfo slowNode = entry.getKey();\n            int index = getDatanodeIndex(slowNode);\n            if (index >= 0) {\n              errorState.setBadNodeIndex(index);\n              throw new IOException(\"Receive reply from slowNode \" + slowNode +\n                  \" for continuous \" + markSlowNodeAsBadNodeThreshold +\n                  \" times, treating it as badNode\");\n            }\n            slowNodeMap.remove(entry.getKey());\n          }\n        }\n      }\n    }\n\n    void close() {\n      responderClosed = true;\n      this.interrupt();\n    }\n\n    int getDatanodeIndex(DatanodeInfo datanodeInfo) {\n      for (int i = 0; i < targets.length; i++) {\n        if (targets[i].equals(datanodeInfo)) {\n          return i;","sourceCodeStart":1320,"sourceCodeEnd":1356,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DataStreamer.java#L1320-L1356","documentation":"Error \"Receive reply from slowNode {} for continuous {} times, treating it as badNode\" thrown in apache/hadoop.","triggerScenarios":"A DataNode in the write pipeline responds slowly on consecutive acknowledgments. After the configured slow-node threshold is reached, the client marks the node as bad and removes it from the pipeline.","commonSituations":"See trigger scenarios.","solutions":["Check network and DataNode load; the slow DataNode was marked bad after repeated slow responses, so the write pipeline will be re-established without it.","Increase dfs.client.slow.io.threshold or investigate DataNode disk/GC pauses if slow nodes are reported frequently.","Verify cluster health with hdfs dfsadmin -report and decommission or fix consistently slow DataNodes."],"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-22T20:17:22.307Z"}