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
- Run the operation directly against the underlying NameNode's WebHDFS port instead of the Router
- Upgrade the Router (hadoop-hdfs-rbf) to a version whose RouterWebHdfsMethods whitelists the op
- 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
- Pin client and Router versions together when new WebHDFS ops are adopted
- Keep a per-environment capability matrix of Router-proxied WebHDFS ops for tooling teams
- Prefer the Router RPC port (client protocol) over WebHDFS for ops rarely proxied
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
- {} is not supported
- Router is in startup mode
- Failed to find datanode, suggest to check cluster health. ex
- File {} not found.
- Offset={} out of the range [0, {}); {}, path={}
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/e23ead384d3fe7e8.
Report an issue: GitHub.