{"record":{"id":"fce14bed8df0ff0f","repo":"apache/hadoop","slug":"could-not-send-oob-reponse-in-time","errorCode":null,"errorMessage":"Could not send OOB reponse in time: {}","messagePattern":"Could not send OOB reponse in time: (.+?)","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java","lineNumber":1339,"sourceCode":"     * An OOB coming from downstream will be automatically relayed upstream\n     * by the responder. This method is used only by originating datanode.\n     *\n     * @param ackStatus the type of ack to be sent\n     */\n    void sendOOBResponse(final Status ackStatus) throws IOException,\n        InterruptedException {\n      if (!running) {\n        LOG.info(\"Cannot send OOB response \" + ackStatus + \n            \". Responder not running.\");\n        return;\n      }\n\n      synchronized(this) {\n        if (sending) {\n          wait(datanode.getOOBTimeout(ackStatus));\n          // Didn't get my turn in time. Give up.\n          if (sending) {\n            throw new IOException(\"Could not send OOB reponse in time: \"\n                + ackStatus);\n          }\n        }\n        sending = true;\n      }\n\n      LOG.info(\"Sending an out of band ack of type \" + ackStatus);\n      try {\n        sendAckUpstreamUnprotected(null, PipelineAck.UNKOWN_SEQNO, 0L, 0L,\n            PipelineAck.combineHeader(datanode.getECN(), ackStatus,\n                datanode.getSLOWByBlockPoolId(block.getBlockPoolId())));\n      } finally {\n        // Let others send ack. Unless there are miltiple OOB send\n        // calls, there can be only one waiter, the responder thread.\n        // In any case, only one needs to be notified.\n        synchronized(this) {\n          sending = false;\n          notify();","sourceCodeStart":1321,"sourceCodeEnd":1357,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java#L1321-L1357","documentation":"Error \"Could not send OOB reponse in time: {}\" thrown in apache/hadoop.","triggerScenarios":"During pipeline recovery, the DataNode fails to send an out-of-band response within the configured timeout.","commonSituations":"An out-of-band ack could not be sent before the deadline, usually due to an overloaded network or a slow client. Tune OOB timeouts or investigate congestion.","solutions":["Increase dfs.datanode.oob.timeout or investigate why the responder thread could not send the out-of-band ack promptly (disk stall, GC pause, network congestion).","Check for long GC pauses or slow disks on this DataNode; OOB timeouts are usually a symptom of local slowness."],"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"}