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
MembershipNamenodeResolver lazily obtains typed record-store interfaces (MembershipStore, DisabledNameserviceStore, RouterStore) from the State Store via getRegisteredRecordStore(). This IOException means the State Store has no record store registered for the requested interface (clazz.getSimpleName()), so the resolver cannot read federation membership data — the store driver never registered that record type during State Store initialization.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MembershipNamenodeResolver.java:120
this.membershipInterface = getStoreInterface(MembershipStore.class);
}
return this.membershipInterface;
}
private synchronized DisabledNameserviceStore getDisabledNameserviceStore()
throws IOException {
if (this.disabledNameserviceInterface == null) {
this.disabledNameserviceInterface =
getStoreInterface(DisabledNameserviceStore.class);
}
return this.disabledNameserviceInterface;
}
private <T extends RecordStore<?>> T getStoreInterface(Class<T> clazz)
throws IOException{
T store = this.stateStore.getRegisteredRecordStore(clazz);
if (store == null) {
throw new IOException("State Store does not have an interface for " +
clazz.getSimpleName());
}
return store;
}
@Override
public boolean loadCache(boolean force) {
// Our cache depends on the store, update it first
try {
MembershipStore membership = getMembershipStore();
if (!membership.loadCache(force)) {
return false;
}
DisabledNameserviceStore disabled = getDisabledNameserviceStore();
if (!disabled.loadCache(force)) {
return false;
}
} catch (IOException e) {View on GitHub (pinned to 2add963021)
Solutions
- Verify dfs.federation.router.store.driver names a supported driver (StateStoreZooKeeperImpl, StateStoreFileSystemImpl, StateStoreFileImpl, StateStoreHBaseImpl, StateStoreDBImpl) and the backend is reachable
- Check router startup logs for StateStoreService/record registration errors preceding this exception
- Restart the router after fixing state store connectivity so stores re-register
- For custom drivers, ensure every record store (membership, disabled nameservice, router) is registered during driver initialization
Defensive patterns
Strategy: validation
Validate before calling
// Before relying on the resolver, verify the record store registered
StateStore store = router.getStateStore();
if (store.getRegisteredRecordStore(MembershipStore.class) == null) {
throw new IOException(
"State store driver did not register MembershipStore; "
+ "check dfs.federation.router.store.driver and backend connectivity");
} Prevention
- Smoke-test state store connectivity before deploying router config changes
- Use built-in drivers; register all record stores in custom driver implementations
- Watch router startup logs for record-store registration lines before sending traffic
When it happens
Trigger: The state store driver (dfs.federation.router.store.driver) failed to initialize or does not register the record store in question; a custom/3rd-party driver missing the registration; or the resolver is used before the router's StateStoreService finished registering its stores.
Common situations: Misconfigured state store driver class or unreachable backend (ZooKeeper/DB) at registration time; routers starting while the state store is down; unit tests with mock state stores missing registrations; custom driver implementations that skip record registration.
Related errors
- State Store does not have an interface for {}
- Configured handlers dfs.federation.router.handler.count= %d
- Mount Table not initialized
- Cannnot build location, {} should not resolve multiple desti
- Wrong name service specified : {}
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/529cf9beba7ba2a9.
Report an issue: GitHub.