apache/hadoop · error · IOException

Unsupported stage {} while receiving block {} from {}

Error message

Unsupported stage {} while receiving block {} from {}

What it means

Error "Unsupported stage {} while receiving block {} from {}" thrown in apache/hadoop.

Source

Thrown at hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BlockReceiver.java:252

        case PIPELINE_SETUP_APPEND:
          replicaHandler = datanode.data.append(block, newGs, minBytesRcvd);
          block.setGenerationStamp(newGs);
          datanode.notifyNamenodeReceivingBlock(
              block, replicaHandler.getReplica().getStorageUuid());
          break;
        case PIPELINE_SETUP_APPEND_RECOVERY:
          replicaHandler = datanode.data.recoverAppend(block, newGs, minBytesRcvd);
          block.setGenerationStamp(newGs);
          datanode.notifyNamenodeReceivingBlock(
              block, replicaHandler.getReplica().getStorageUuid());
          break;
        case TRANSFER_RBW:
        case TRANSFER_FINALIZED:
          // this is a transfer destination
          replicaHandler = datanode.data.createTemporary(storageType, storageId,
              block, isTransfer);
          break;
        default: throw new IOException("Unsupported stage " + stage + 
              " while receiving block " + block + " from " + inAddr);
        }
      }
      replicaInfo = replicaHandler.getReplica();
      this.dropCacheBehindWrites = (cachingStrategy.getDropBehind() == null) ?
        datanode.getDnConf().dropCacheBehindWrites :
          cachingStrategy.getDropBehind();
      this.syncBehindWrites = datanode.getDnConf().syncBehindWrites;
      this.syncBehindWritesInBackground = datanode.getDnConf().
          syncBehindWritesInBackground;
      
      final boolean isCreate = isDatanode || isTransfer 
          || stage == BlockConstructionStage.PIPELINE_SETUP_CREATE;
      streams = replicaInfo.createStreams(isCreate, requestedChecksum);
      assert streams != null : "null streams!";

      // read checksum meta information
      this.clientChecksum = requestedChecksum;

View on GitHub (pinned to 2add963021)

Solutions

  1. Ensure the client and DataNode run compatible Hadoop versions so the pipeline stage (PIPELINE_SETUP_CREATE, TRANSFER_RBW, etc.) is recognized by the receiver.
  2. Check for network corruption or non-HDFS traffic hitting the DataNode streaming port; the op code must match a known BlockConstructionStage.

When it happens

Trigger: A client (or upstream DataNode in a write pipeline) sends a block write request with a stage value the receiver does not recognize, typically due to version mismatch or corrupted protocol data.

Common situations: A client or upstream DataNode sent a pipeline packet with a stage the receiver does not support. Prevent by keeping client and DataNode versions compatible during rolling upgrades.


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/27b134637c6b42a7. Report an issue: GitHub.