apache/hadoop · error · UnsupportedOperationException

{} is not supported

Error message

{} is not supported

What it means

RouterWebHdfsMethods.put throws UnsupportedOperationException for any WebHDFS PUT operation that falls through its switch to the default case. RBF only whitelists a fixed set of PUT ops it can proxy (CREATE, MKDIRS, RENAME, SETOWNER, SETPERMISSION, SETTIMES, RENEWDELEGATIONTOKEN, CANCELDELEGATIONTOKEN, SETACL, SETXATTR, REMOVEXATTR, CREATESNAPSHOT/RENAMESNAPSHOT/SETSTORAGEPOLICY/SATISFYSTORAGEPOLICY etc.); anything else cannot be forwarded through the Router federation layer. The message contains the op enum constant that was rejected.

Source

Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterWebHdfsMethods.java:278

    case CREATESNAPSHOT:
    case RENAMESNAPSHOT:
    case DISALLOWSNAPSHOT:
    case SETSTORAGEPOLICY:
    case ENABLEECPOLICY:
    case DISABLEECPOLICY:
    case SATISFYSTORAGEPOLICY:
    {
      // Whitelist operations that can handled by NamenodeWebHdfsMethods
      return super.put(ugi, delegation, username, doAsUser, fullpath, op,
          destination, owner, group, permission, unmaskedPermission,
          overwrite, bufferSize, replication, blockSize, modificationTime,
          accessTime, renameOptions, createParent, delegationTokenArgument,
          aclPermission, xattrName, xattrValue, xattrSetFlag, snapshotName,
          oldSnapshotName, exclDatanodes, createFlagParam, noredirectParam,
          policyName, ecpolicy, namespaceQuota, storagespaceQuota, storageType);
    }
    default:
      throw new UnsupportedOperationException(op + " is not supported");
    }
  }

  @Override
  protected Response post(
      final UserGroupInformation ugi,
      final DelegationParam delegation,
      final UserParam username,
      final DoAsParam doAsUser,
      final String fullpath,
      final PostOpParam op,
      final ConcatSourcesParam concatSrcs,
      final BufferSizeParam bufferSize,
      final ExcludeDatanodesParam excludeDatanodes,
      final NewLengthParam newLength,
      final NoRedirectParam noRedirectParam
  ) throws IOException, URISyntaxException {
    switch(op.getValue()) {

View on GitHub (pinned to 2add963021)

Solutions

  1. Run the operation directly against the underlying NameNode's WebHDFS port instead of the Router
  2. Upgrade the Router (hadoop-hdfs-rbf) to a version whose RouterWebHdfsMethods whitelists the op
  3. Check RouterWebHdfsMethods.put for your version to confirm the op is or is not supported before scripting it
Defensive patterns

Strategy: validation

Validate before calling

// Before issuing WebHDFS PUT via Router, check the op is proxied:
Set<String> supportedPut = Set.of("CREATE","MKDIRS","RENAME","SETOWNER",
    "SETPERMISSION","SETTIMES","SETACL","SETXATTR","REMOVEXATTR",
    "CREATESNAPSHOT","RENAMESNAPSHOT","SETSTORAGEPOLICY",
    "SATISFYSTORAGEPOLICY" /* + delegation token ops */);
if (!supportedPut.contains(op.name())) {
  // send to NameNode WebHDFS instead of Router
}

Try / catch

catch (UnsupportedOperationException e) {
  // op not proxied by Router WebHDFS: fall back to the subcluster NameNode endpoint
}

Prevention

When it happens

Trigger: Issuing a WebHDFS PUT op the Router switch does not handle, e.g. a newly added HttpOpParam value unsupported in this Router version, or ops like ALLOWSNAPSHOT/SETREPLICATION variants that are not in the RBF whitelist.

Common situations: Client and Router version skew: a newer WebHDFS client sends an op introduced after the deployed RBF version; tools (curl scripts, Hue, third-party clients) using ops the federation proxy never proxied.

Related errors


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