apache/hadoop · error · StandbyException
Router {} is overloaded: Not enough client threads {}/{}
Error message
Router {} is overloaded: Not enough client threads {}/{} What it means
Error "Router {} is overloaded: Not enough client threads {}/{}" 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:1692
final Method m = method.getMethod();
try {
List<Future<Object>> futures = null;
if (timeOutMs > 0) {
futures = executorService.invokeAll(
callables, timeOutMs, TimeUnit.MILLISECONDS);
} else {
futures = executorService.invokeAll(callables);
}
return processFutures(method, m, orderedLocations, futures);
} catch (RejectedExecutionException e) {
if (rpcMonitor != null) {
rpcMonitor.proxyOpFailureClientOverloaded();
}
int active = executorService.getActiveCount();
int total = executorService.getMaximumPoolSize();
String msg = "Not enough client threads " + active + "/" + total;
LOG.error(msg);
throw new StandbyException(
"Router " + router.getRouterId() + " is overloaded: " + msg);
} catch (InterruptedException ex) {
LOG.error("Unexpected error while invoking API: {}", ex.getMessage());
throw new IOException(
"Unexpected error while invoking API " + ex.getMessage(), ex);
} finally {
releasePermit(CONCURRENT_NS, ugi, method, controller);
}
}
/**
* Handle all futures during the invokeConcurrent call process.
*
* @param <T> The type of the remote location.
* @param <R> The type of the remote method return.
* @param method The remote method and parameters to invoke.
* @param m The method to invoke.
* @param orderedLocations List of remote locations to call concurrently.View on GitHub (pinned to 2add963021)
Solutions
- Increase dfs.federation.router.handler.count (or the per-NS handler counts) to match load.
- Reduce client concurrency or add more Router instances behind a load balancer.
- Check fairness settings (dfs.federation.router.fairness.*) that may be rejecting requests.
When it happens
Trigger: Router fairness/overload check rejected the request because available client handler threads are below the required threshold.
Common situations: Traffic spike exhausting the Router's RPC handler pool, or handler count configured too low for the workload.
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/ca05e9eab0f5a3ac.
Report an issue: GitHub.