apache/hadoop · error · ShortCircuitFdsUnsupportedException

This DataNode's FsDatasetSpi does not support short-circuit

Error message

This DataNode's FsDatasetSpi does not support short-circuit local reads

What it means

Error "This DataNode's FsDatasetSpi does not support short-circuit local reads" thrown in apache/hadoop.

Source

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

          fileDescriptorPassingDisabledReason);
    }
    int blkVersion = CURRENT_BLOCK_FORMAT_VERSION;
    if (maxVersion < blkVersion) {
      throw new ShortCircuitFdsVersionException("Your client is too old " +
        "to read this block!  Its format version is " + 
        blkVersion + ", but the highest format version you can read is " +
        maxVersion);
    }
    metrics.incrBlocksGetLocalPathInfo();
    FileInputStream fis[] = new FileInputStream[2];
    
    try {
      checkStorageState("requestShortCircuitFdsForRead");
      fis[0] = (FileInputStream)data.getBlockInputStream(blk, 0);
      fis[1] = DatanodeUtil.getMetaDataInputStream(blk, data);
    } catch (ClassCastException e) {
      LOG.debug("requestShortCircuitFdsForRead failed", e);
      throw new ShortCircuitFdsUnsupportedException("This DataNode's " +
          "FsDatasetSpi does not support short-circuit local reads");
    }
    return fis;
  }

  private void checkBlockToken(ExtendedBlock block,
      Token<BlockTokenIdentifier> token, AccessMode accessMode)
      throws IOException {
    if (isBlockTokenEnabled) {
      BlockTokenIdentifier id = new BlockTokenIdentifier();
      ByteArrayInputStream buf = new ByteArrayInputStream(token.getIdentifier());
      DataInputStream in = new DataInputStream(buf);
      id.readFields(in);
      LOG.debug("BlockTokenIdentifier id: {}", id);
      blockPoolTokenSecretManager.checkAccess(id, null, block, accessMode,
          null, null);
    }
  }

View on GitHub (pinned to 2add963021)

Solutions

  1. Disable short-circuit local reads (dfs.client.read.shortcircuit=false) for clients talking to this DataNode.
  2. Use the default FsDatasetSpi (local disk) implementation; alternative dataset implementations (e.g., provided storage) do not support short-circuit reads.

When it happens

Trigger: A client requests a short-circuit read from a DataNode whose FsDatasetSpi implementation does not implement short-circuit access.

Common situations: Short-circuit reads were requested but the configured FsDataset implementation lacks support. Disable short-circuit reads or use the default FsDataset.


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