apache/hadoop · error · IOException
State Store does not have an interface for {}
Error message
State Store does not have an interface for {} What it means
MountTableResolver.getMountTableStore() lazily fetches the MountTableStore record store from the State Store; if stateStore.getRegisteredRecordStore(MountTableStore.class) returns null it throws IOException('State Store does not have an interface for MountTableStore'), meaning the state store driver never registered the mount table record store. Every mount table read (addEntry, getMounts, lookups after cache load) funnels through this method.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MountTableResolver.java:214
*
* @return Router for this resolver.
*/
protected Router getRouter() {
return this.router;
}
/**
* Get the mount table store for this resolver.
*
* @return Mount table store.
* @throws IOException If it cannot connect to the State Store.
*/
protected MountTableStore getMountTableStore() throws IOException {
if (this.mountTableStore == null) {
this.mountTableStore = this.stateStore.getRegisteredRecordStore(
MountTableStore.class);
if (this.mountTableStore == null) {
throw new IOException("State Store does not have an interface for " +
MountTableStore.class);
}
}
return this.mountTableStore;
}
/**
* Add a mount entry to the table.
*
* @param entry The mount table record to add from the state store.
*/
public void addEntry(final MountTable entry) {
writeLock.lock();
try {
String srcPath = entry.getSourcePath();
this.tree.put(srcPath, entry);
invalidateLocationCache(srcPath);
} finally {View on GitHub (pinned to 2add963021)
Solutions
- Confirm dfs.federation.router.store.driver is a supported implementation and the backend is reachable from the router host
- Check router logs for state store initialization errors; the mount table store registers during StateStoreService init
- Restart the router after state store recovery so MountTableStore re-registers
- In embedded/tool usage, register record stores on the StateStore before creating the resolver
Defensive patterns
Strategy: validation
Validate before calling
// Verify mount table store registration before use
if (stateStore.getRegisteredRecordStore(MountTableStore.class) == null) {
throw new IOException(
"MountTableStore not registered in state store; "
+ "check dfs.federation.router.store.driver");
} Prevention
- Health-check the state store driver before starting routers
- In embedded usage, register record stores on the StateStore before constructing MountTableResolver
- Alert on state store service startup failures so resolvers never run unregistered
When it happens
Trigger: The router's StateStoreService initialized with a driver that did not register MountTableStore — driver misconfiguration, backend failure at registration time, custom driver without mount table support — or the resolver is constructed/used before state store registration completed.
Common situations: dfs.federation.router.store.driver pointing at the wrong class; ZooKeeper/DB unreachable during router startup; tools embedding MountTableResolver against a bare StateStore without registering stores first.
Related errors
- State Store does not have an interface for {}
- Cannnot build location, {} should not resolve multiple desti
- Failed update mount table " + mount
- Failed update mount table " + mount + " with readonly=" + re
- Cannot find locations for {}, because the default nameservic
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/59abaa9b41a8f923.
Report an issue: GitHub.