{"record":{"id":"3c1edcf559836e8f","repo":"apache/hadoop","slug":"the-mount-point-has-more-than-one-destination-pat","errorCode":null,"errorMessage":"The mount point has more than one destination. path={}","messagePattern":"The mount point has more than one destination\\. path=(.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/rbfbalance/RouterFedBalance.java","lineNumber":332,"sourceCode":"  }\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\",\n        CLI_OPTIONS);\n  }\n","sourceCodeStart":314,"sourceCodeEnd":350,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/rbfbalance/RouterFedBalance.java#L314-L350","documentation":"FedBalance requires the source mount to have exactly one destination (one active cluster holding the data). getSrcPath() rejects mounts whose entry lists more than one remote location with IllegalArgumentException('The mount point has more than one destination'), because with multiple destinations (e.g., HASH- or LOCAL-ordered multi-namespace mounts) the true source of the bytes is ambiguous.","triggerScenarios":"`hdfs fedbalance -s <mount>` where dfsrouteradmin -list shows several destinations for that mount — typically entries created with multiple -ns/-dst pairs for load-balanced access.","commonSituations":"Operators attempt to migrate data off a multi-destination (read load-balancing) mount without first collapsing it to a single destination; federations that later added HASH ordering to existing mounts.","solutions":["Inspect the entry: hdfs dfsrouteradmin -list (destination count for the mount)","Collapse the mount to a single destination: hdfs dfsrouteradmin -update /mount -ns ns0 -dst /mount with exactly one -ns/-dst pair","Re-run the fedbalance job against the single-destination mount"],"exampleFix":"# before: mount /apps has two destinations → rejected\nhdfs dfsrouteradmin -add /apps -ns ns0 -dst /apps -ns ns1 -dst /apps\nhdfs fedbalance -s /apps -d hdfs://ns2/apps\n\n# after: single destination, then balance\nhdfs dfsrouteradmin -update /apps -ns ns0 -dst /apps\nhdfs fedbalance -s /apps -d hdfs://ns2/apps","handlingStrategy":"validation","validationCode":"// Reject multi-destination mounts before running fedbalance\nMountTable entry = MountTableProcedure.getMountEntry(srcPath, mountTableManager);\nif (entry == null || entry.getDestinations().size() != 1) {\n  throw new IllegalArgumentException(\n      srcPath + \" must be a mount with exactly one destination for fedbalance\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep migration-eligible mounts single-destination","Check destination count in dfsrouteradmin -list output before planning a migration","Document which mounts use multi-destination ordering so operators avoid balancing them"],"tags":["hadoop","rbf","fedbalance","mount-table","multi-destination","client-side"],"backgroundTag":"unsupported-configuration-state","analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}