{"record":{"id":"1b35dafe3d98afdd","repo":"apache/hadoop","slug":"no-remote-locations-available","errorCode":null,"errorMessage":"No remote locations available","messagePattern":"No remote locations available","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java","lineNumber":1589,"sourceCode":"   * @param method The remote method and parameters to invoke.\n   * @param standby If the requests should go to the standby namenodes too.\n   * @param timeOutMs Timeout for each individual call.\n   * @param clazz Type of the remote return type.\n   * @return Result of invoking the method per subcluster (list of results).\n   *         This includes the exception for each remote location.\n   * @throws IOException If there are errors invoking the method.\n   */\n  @SuppressWarnings(\"unchecked\")\n  public <T extends RemoteLocationContext, R> List<RemoteResult<T, R>>\n      invokeConcurrent(final Collection<T> locations,\n          final RemoteMethod method, boolean standby, long timeOutMs,\n          Class<R> clazz) throws IOException {\n\n    final UserGroupInformation ugi = RouterRpcServer.getRemoteUser();\n    final Method m = method.getMethod();\n\n    if (locations.isEmpty()) {\n      throw new IOException(\"No remote locations available\");\n    } else if (locations.size() == 1 && timeOutMs <= 0) {\n      // Shortcut, just one call\n      return invokeSingle(locations.iterator().next(), method);\n    }\n    RouterRpcFairnessPolicyController controller = getRouterRpcFairnessPolicyController();\n    acquirePermit(CONCURRENT_NS, ugi, method.getMethodName(), controller);\n\n    List<T> orderedLocations = new ArrayList<>();\n    List<Callable<Object>> callables = new ArrayList<>();\n    // transfer originCall & callerContext to worker threads of executor.\n    final Call originCall = Server.getCurCall().get();\n    final CallerContext originContext = CallerContext.getCurrent();\n    try{\n      for (final T location : locations) {\n        String nsId = location.getNameserviceId();\n        boolean isObserverRead = isObserverReadEligible(nsId, m);\n        final List<? extends FederationNamenodeContext> namenodes =\n            getOrderedNamenodes(nsId, isObserverRead);","sourceCodeStart":1571,"sourceCodeEnd":1607,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java#L1571-L1607","documentation":"Error \"No remote locations available\" thrown in apache/hadoop.","triggerScenarios":"Path resolution produced zero remote locations for the requested path.","commonSituations":"Missing/empty mount table entry for the path, or the default nameservice fallback is disabled.","solutions":["Check the mount table entry for the path; it must have at least one destination.","Add or fix destinations: dfsrouteradmin -add <src> <nsId> <dest>.","Confirm the path resolves through a mount point rather than falling back to a disabled default nameservice."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}