{"record":{"id":"e75a99c3ae4dfde1","repo":"apache/hadoop","slug":"unknown-command-cmd","errorCode":null,"errorMessage":"\"Unknown command: \" + cmd","messagePattern":"\"Unknown command: \" \\+ cmd","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java","lineNumber":1274,"sourceCode":"   * Manage the name service: enabling/disabling.\n   * @param cmd Input command, disable or enable.\n   * @throws IOException\n   */\n  private void manageNameservice(String cmd, String nsId) throws IOException {\n    if (cmd.equals(\"enable\")) {\n      if (enableNameservice(nsId)) {\n        System.out.println(\"Successfully enabled nameservice \" + nsId);\n      } else {\n        System.err.println(\"Cannot enable \" + nsId);\n      }\n    } else if (cmd.equals(\"disable\")) {\n      if (disableNameservice(nsId)) {\n        System.out.println(\"Successfully disabled nameservice \" + nsId);\n      } else {\n        System.err.println(\"Cannot disable \" + nsId);\n      }\n    } else {\n      throw new IllegalArgumentException(\"Unknown command: \" + cmd);\n    }\n  }\n\n  private boolean disableNameservice(String nsId) throws IOException {\n    NameserviceManager nameserviceManager = client.getNameserviceManager();\n    DisableNameserviceResponse response =\n        nameserviceManager.disableNameservice(\n            DisableNameserviceRequest.newInstance(nsId));\n    return response.getStatus();\n  }\n\n  private boolean enableNameservice(String nsId) throws IOException {\n    NameserviceManager nameserviceManager = client.getNameserviceManager();\n    EnableNameserviceResponse response =\n        nameserviceManager.enableNameservice(\n            EnableNameserviceRequest.newInstance(nsId));\n    return response.getStatus();\n  }","sourceCodeStart":1256,"sourceCodeEnd":1292,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java#L1256-L1292","documentation":"The dfsrouteradmin -nameservice subcommand accepts exactly two verbs: enable and disable (usage: '-nameservice enable | disable <nameservice>'). Anything else reaches the final else and throws IllegalArgumentException('Unknown command: ' + cmd) before any RPC is attempted.","triggerScenarios":"hdfs dfsrouteradmin -nameservice status ns1; -nameservice list; -nameservice restart ns1; misspelled verb like 'disable ' with trailing characters or wrong case.","commonSituations":"Admin scripts written for other tooling guessing subcommands; attempts to check nameservice state -- the supported introspection is 'hdfs dfsrouteradmin -getDisabledNameservices'.","solutions":["Use only: hdfs dfsrouteradmin -nameservice <enable|disable> <nameserviceId>","To see disabled nameservices run 'hdfs dfsrouteradmin -getDisabledNameservices'","Check usage: hdfs dfsrouteradmin -help nameservice"],"exampleFix":"# before\nhdfs dfsrouteradmin -nameservice status ns1\n# after\nhdfs dfsrouteradmin -getDisabledNameservices   # inspect, then enable/disable as needed","handlingStrategy":"validation","validationCode":"case \"$VERB\" in enable|disable) ;; *) echo \"-nameservice accepts enable|disable only; use -getDisabledNameservices to inspect\" >&2; exit 2;; esac\nhdfs dfsrouteradmin -nameservice \"$VERB\" \"$NSID\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Inspection goes through -getDisabledNameservices, not -nameservice subverbs","Validate verb and nameservice id separately in automation"],"tags":["hdfs","rbf","federation","nameservice","cli","argument-validation"],"backgroundTag":"invalid-command-line-argument","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}