{"record":{"id":"e23ead384d3fe7e8","repo":"apache/hadoop","slug":"is-not-supported-e23ead","errorCode":null,"errorMessage":"{} is not supported","messagePattern":"(.+?) is not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterWebHdfsMethods.java","lineNumber":278,"sourceCode":"    case CREATESNAPSHOT:\n    case RENAMESNAPSHOT:\n    case DISALLOWSNAPSHOT:\n    case SETSTORAGEPOLICY:\n    case ENABLEECPOLICY:\n    case DISABLEECPOLICY:\n    case SATISFYSTORAGEPOLICY:\n    {\n      // Whitelist operations that can handled by NamenodeWebHdfsMethods\n      return super.put(ugi, delegation, username, doAsUser, fullpath, op,\n          destination, owner, group, permission, unmaskedPermission,\n          overwrite, bufferSize, replication, blockSize, modificationTime,\n          accessTime, renameOptions, createParent, delegationTokenArgument,\n          aclPermission, xattrName, xattrValue, xattrSetFlag, snapshotName,\n          oldSnapshotName, exclDatanodes, createFlagParam, noredirectParam,\n          policyName, ecpolicy, namespaceQuota, storagespaceQuota, storageType);\n    }\n    default:\n      throw new UnsupportedOperationException(op + \" is not supported\");\n    }\n  }\n\n  @Override\n  protected Response post(\n      final UserGroupInformation ugi,\n      final DelegationParam delegation,\n      final UserParam username,\n      final DoAsParam doAsUser,\n      final String fullpath,\n      final PostOpParam op,\n      final ConcatSourcesParam concatSrcs,\n      final BufferSizeParam bufferSize,\n      final ExcludeDatanodesParam excludeDatanodes,\n      final NewLengthParam newLength,\n      final NoRedirectParam noRedirectParam\n  ) throws IOException, URISyntaxException {\n    switch(op.getValue()) {","sourceCodeStart":260,"sourceCodeEnd":296,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterWebHdfsMethods.java#L260-L296","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before issuing WebHDFS PUT via Router, check the op is proxied:\nSet<String> supportedPut = Set.of(\"CREATE\",\"MKDIRS\",\"RENAME\",\"SETOWNER\",\n    \"SETPERMISSION\",\"SETTIMES\",\"SETACL\",\"SETXATTR\",\"REMOVEXATTR\",\n    \"CREATESNAPSHOT\",\"RENAMESNAPSHOT\",\"SETSTORAGEPOLICY\",\n    \"SATISFYSTORAGEPOLICY\" /* + delegation token ops */);\nif (!supportedPut.contains(op.name())) {\n  // send to NameNode WebHDFS instead of Router\n}","typeGuard":null,"tryCatchPattern":"catch (UnsupportedOperationException e) {\n  // op not proxied by Router WebHDFS: fall back to the subcluster NameNode endpoint\n}","preventionTips":["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"],"tags":["hadoop","hdfs","rbf","webhdfs","unsupported-operation","put"],"backgroundTag":"unsupported-operation","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}