{"record":{"id":"8d457f5ed0a77c2a","repo":"apache/hadoop","slug":"the-mount-point-doesn-t-exist-path-fedpath","errorCode":null,"errorMessage":"The mount point doesn't exist. path=\" + fedPath","messagePattern":"The mount point doesn't exist\\. path=\" \\+ fedPath","errorType":"validation","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/rbfbalance/RouterFedBalance.java","lineNumber":329,"sourceCode":"      scheduler.shutDown();\n    }\n    return 0;\n  }\n\n  /**\n   * Get src uri from Router.\n   */\n  private Path getSrcPath(String fedPath) throws IOException {\n    String address = getConf().getTrimmed(\n        RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_KEY,\n        RBFConfigKeys.DFS_ROUTER_ADMIN_ADDRESS_DEFAULT);\n    InetSocketAddress routerSocket = NetUtils.createSocketAddr(address);\n    RouterClient rClient = new RouterClient(routerSocket, getConf());\n    try {\n      MountTableManager mountTable = rClient.getMountTableManager();\n      MountTable entry = MountTableProcedure.getMountEntry(fedPath, mountTable);\n      if (entry == null) {\n        throw new IllegalArgumentException(\n            \"The mount point doesn't exist. path=\" + fedPath);\n      } else if (entry.getDestinations().size() > 1) {\n        throw new IllegalArgumentException(\n            \"The mount point has more than one destination. path=\" + fedPath);\n      } else {\n        String ns = entry.getDestinations().get(0).getNameserviceId();\n        String path = entry.getDestinations().get(0).getDest();\n        return new Path(\"hdfs://\" + ns + path);\n      }\n    } finally {\n      rClient.close();\n    }\n  }\n\n  private void printUsage() {\n    HelpFormatter formatter = new HelpFormatter();\n    formatter.printHelp(\n        \"rbfbalance OPTIONS [submit|continue] <src> <target>\\n\\nOPTIONS\",","sourceCodeStart":311,"sourceCodeEnd":347,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/rbfbalance/RouterFedBalance.java#L311-L347","documentation":"RouterFedBalance.getSrcPath() resolves the fedbalance source path through the router's admin API: it fetches the mount table entry for the federated path and builds hdfs://<ns><path> as the actual source cluster URI. If MountTableProcedure.getMountEntry(fedPath, mountTable) returns null it throws IllegalArgumentException('The mount point doesn't exist') — the source argument is not a mount point this router knows.","triggerScenarios":"`hdfs fedbalance -s <path>` where <path> is not present in the router mount table: a subdirectory under a mount instead of the mount point itself, a mount never added, or dfs.federation.router.admin.address pointing at the wrong router.","commonSituations":"Passing /apps/data/2024 when the mount is /apps/data; pointing the client at the wrong router or federation; running fedbalance before creating the mount; typos in the -s path.","solutions":["List the mounts: hdfs dfsrouteradmin -list, and pass the exact mount source path as -s","Use the mount point itself, not a sub-path beneath it","Verify the router admin address/namespace the client resolves","Create the missing mount first with hdfs dfsrouteradmin -add if it should exist"],"exampleFix":"# before: /apps/data/2024 is not a mount point → IllegalArgumentException\nhdfs fedbalance -s /apps/data/2024 -d hdfs://ns1/archive/2024\n\n# after: use the mount point itself\nhdfs fedbalance -s /apps/data -d hdfs://ns1/archive","handlingStrategy":"validation","validationCode":"// Resolve/validate the source mount before submitting the job\ntry (RouterClient client = new RouterClient(routerAdminAddr, conf)) {\n  MountTable entry = MountTableProcedure.getMountEntry(srcPath,\n      client.getMountTableManager());\n  if (entry == null) {\n    throw new IllegalArgumentException(\n        srcPath + \" is not a mount point; see hdfs dfsrouteradmin -list\");\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass the mount point itself to -s, never a subdirectory","Keep a checked list of valid mount points in automation scripts","Verify router admin address resolution before job submission"],"tags":["hadoop","rbf","fedbalance","mount-table","cli","client-side"],"backgroundTag":"mount-point-not-found","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}