apache/hadoop · error · IOException
No namespace availaible.
Error message
No namespace availaible.
What it means
AsyncErasureCoding.getECTopologyResultForPolicies (async RBF path, used when clients call the Router with the async RPC router mode) checks the membership table before verifying EC policies: if namenodeResolver.getNamespaces() returns an empty set it throws IOException('No namespace availaible.') (typo is in the source). With no registered namespaces there is no NameNode to answer the EC topology query, so the call cannot proceed.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/async/AsyncErasureCoding.java:211
/**
* Asynchronously get the EC topology result for the given policies.
* This method checks the operation category and then invokes the
* getECTopologyResultForPolicies method concurrently across all namespaces.
* <p>
* The results are merged and the first unsupported result is returned.
*
* @param policyNames Array of policy names to check.
* @return ECTopologyVerifierResult for the policies.
* @throws IOException If an I/O error occurs.
*/
@Override
public ECTopologyVerifierResult getECTopologyResultForPolicies(
String[] policyNames) throws IOException {
RemoteMethod method = new RemoteMethod("getECTopologyResultForPolicies",
new Class<?>[] {String[].class}, new Object[] {policyNames});
Set<FederationNamespaceInfo> nss = namenodeResolver.getNamespaces();
if (nss.isEmpty()) {
throw new IOException("No namespace availaible.");
}
rpcClient.invokeConcurrent(nss, method, true, false,
ECTopologyVerifierResult.class);
asyncApply((ApplyFunction<Map<FederationNamespaceInfo, ECTopologyVerifierResult>,
ECTopologyVerifierResult>) ret -> {
for (Map.Entry<FederationNamespaceInfo, ECTopologyVerifierResult> entry :
ret.entrySet()) {
if (!entry.getValue().isSupported()) {
return entry.getValue();
}
}
// If no negative result, return the result from the first namespace.
return ret.get(nss.iterator().next());
});
return asyncReturn(ECTopologyVerifierResult.class);
}
View on GitHub (pinned to 2add963021)
Solutions
- Verify membership: hdfs dfsrouteradmin -getNamespaceInfo should list all namespaces; if empty, fix NameNode-to-Router heartbeat configuration (dfs.federation.router.* on the NN side) so namespaces register
- Check State Store connectivity and health from the Router (safemode status, router logs for StateStoreUnavailableException)
- Retry after namespaces are registered; the call succeeds once the membership table is populated
Defensive patterns
Strategy: try-catch
Validate before calling
// Ops precheck: hdfs dfsrouteradmin -getNamespaceInfo // must list namespaces before issuing EC calls through the Router.
Try / catch
catch (IOException e) {
if (e.getMessage().equals("No namespace availaible.")) {
// membership table empty: fix NN heartbeats / State Store, then retry
}
} Prevention
- Verify membership registration (getNamespaceInfo) as part of Router bring-up checklists
- Monitor State Store availability; an unreachable store empties the membership view
- Delay EC-dependent jobs until the Router reports all namespaces registered
When it happens
Trigger: Any EC-related client call (e.g. hdfs erasurecode or setErasureCodingPolicy flows reaching getECTopologyResultForPolicies) when the State Store membership table is empty; NameNode heartbeats never registered; Router pointed at the wrong State Store.
Common situations: Fresh RBF setup where NN federation heartbeats are not yet configured/sent; State Store (ZK) quorum down so membership reads return nothing; router.namenode.resolver pointing at a store without membership records.
Related errors
- No namespace availaible.
- Cannot find locations for {} in {}
- The quota system is disabled in Router.
- Rename of {} to {} is not allowed. The number of remote loca
- Rename of {src} to {dst} is not allowed. The number of remot
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/4c7ecfc6fb30df58.
Report an issue: GitHub.