apache/hadoop · error · IOException

No remote locations available

Error message

No remote locations available

What it means

Error "No remote locations available" thrown in apache/hadoop.

Source

Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterRpcClient.java:1589

   * @param method The remote method and parameters to invoke.
   * @param standby If the requests should go to the standby namenodes too.
   * @param timeOutMs Timeout for each individual call.
   * @param clazz Type of the remote return type.
   * @return Result of invoking the method per subcluster (list of results).
   *         This includes the exception for each remote location.
   * @throws IOException If there are errors invoking the method.
   */
  @SuppressWarnings("unchecked")
  public <T extends RemoteLocationContext, R> List<RemoteResult<T, R>>
      invokeConcurrent(final Collection<T> locations,
          final RemoteMethod method, boolean standby, long timeOutMs,
          Class<R> clazz) throws IOException {

    final UserGroupInformation ugi = RouterRpcServer.getRemoteUser();
    final Method m = method.getMethod();

    if (locations.isEmpty()) {
      throw new IOException("No remote locations available");
    } else if (locations.size() == 1 && timeOutMs <= 0) {
      // Shortcut, just one call
      return invokeSingle(locations.iterator().next(), method);
    }
    RouterRpcFairnessPolicyController controller = getRouterRpcFairnessPolicyController();
    acquirePermit(CONCURRENT_NS, ugi, method.getMethodName(), controller);

    List<T> orderedLocations = new ArrayList<>();
    List<Callable<Object>> callables = new ArrayList<>();
    // transfer originCall & callerContext to worker threads of executor.
    final Call originCall = Server.getCurCall().get();
    final CallerContext originContext = CallerContext.getCurrent();
    try{
      for (final T location : locations) {
        String nsId = location.getNameserviceId();
        boolean isObserverRead = isObserverReadEligible(nsId, m);
        final List<? extends FederationNamenodeContext> namenodes =
            getOrderedNamenodes(nsId, isObserverRead);

View on GitHub (pinned to 2add963021)

Solutions

  1. Check the mount table entry for the path; it must have at least one destination.
  2. Add or fix destinations: dfsrouteradmin -add <src> <nsId> <dest>.
  3. Confirm the path resolves through a mount point rather than falling back to a disabled default nameservice.

When it happens

Trigger: Path resolution produced zero remote locations for the requested path.

Common situations: Missing/empty mount table entry for the path, or the default nameservice fallback is disabled.


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/1b35dafe3d98afdd. Report an issue: GitHub.