{"record":{"id":"6bb6aaa923ddaaf8","repo":"apache/hadoop","slug":"wrong-name-service-specified","errorCode":null,"errorMessage":"Wrong name service specified : {}","messagePattern":"Wrong name service specified : (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/FederationUtil.java","lineNumber":297,"sourceCode":"   * @throws IllegalArgumentException if monitored namenodes are not correctly configured.\n   */\n  public static Set<String> getAllConfiguredNS(Configuration conf)\n      throws IllegalArgumentException {\n    // Get all name services configured\n    Collection<String> namenodes = conf.getTrimmedStringCollection(\n        DFS_ROUTER_MONITOR_NAMENODE);\n\n    Set<String> nameservices = new HashSet();\n    for (String namenode : namenodes) {\n      String[] namenodeSplit = namenode.split(\"\\\\.\");\n      String nsId;\n      if (namenodeSplit.length == 2) {\n        nsId = namenodeSplit[0];\n      } else if (namenodeSplit.length == 1) {\n        nsId = namenode;\n      } else {\n        String errorMsg = \"Wrong name service specified : \" + namenode;\n        throw new IllegalArgumentException(\n            errorMsg);\n      }\n      nameservices.add(nsId);\n    }\n    return nameservices;\n  }\n}","sourceCodeStart":279,"sourceCodeEnd":304,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/FederationUtil.java#L279-L304","documentation":"FederationUtil.getNameservices() parses each value of dfs.federation.router.monitor.namenode into a nameservice id: 'nsId.nnId' (two components) or a bare 'nsId' (one component) are accepted; any value whose split on '.' produces more than two parts throws IllegalArgumentException('Wrong name service specified'). It rejects config entries (e.g., host-qualified strings) that cannot map to a nameservice, failing router startup/monitoring initialization.","triggerScenarios":"dfs.federation.router.monitor.namenode contains a value like ns0.nn1.ns0.example.com or any dotted entry with 3+ components — commonly an FQDN or rpc-address pasted instead of the nsId[.nnId] identifier.","commonSituations":"Operators copy values from dfs.namenode.rpc-address.* (host:port or FQDN forms) into the monitor key; typo'd multi-dot identifiers during initial router setup.","solutions":["Edit dfs.federation.router.monitor.namenode to use only nsId or nsId.nnId forms (e.g., ns0.nn1)","If you meant to monitor router-adjacent namenodes by role, use the appropriate keys (e.g., dfs.federation.router.monitor.localnamenode) instead of host names here","Restart/reload the router after fixing the configuration"],"exampleFix":"<!-- before -->\n<property>\n  <name>dfs.federation.router.monitor.namenode</name>\n  <value>ns0.nn1.ns0.example.com</value>\n</property>\n<!-- after -->\n<property>\n  <name>dfs.federation.router.monitor.namenode</name>\n  <value>ns0.nn1</value>\n</property>","handlingStrategy":"validation","validationCode":"// Validate monitor entries before starting the router\nfor (String nn : conf.getTrimmedStrings(\"dfs.federation.router.monitor.namenode\")) {\n  if (nn.split(\"\\\\.\").length > 2) {\n    throw new IllegalArgumentException(\n        \"Bad dfs.federation.router.monitor.namenode entry (want nsId or nsId.nnId): \" + nn);\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use nsId.nnId identifiers in monitor config, never hostnames or FQDNs","Lint router config keys in deployment pipelines before rollout","Copy identifiers from dfs.nameservices / dfs.ha.namenodes, not from rpc-address values"],"tags":["hadoop","rbf","router","configuration","nameservice","startup"],"backgroundTag":"malformed-config-value","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}