apache/hadoop · error · IOException
Mount table state store is not available.
Error message
Mount table state store is not available.
What it means
MountTableRefresherService — the router's periodic mount-table cache refresher — obtains its MountTableStore via router.getStateStore().getRegisteredRecordStore(MountTableStore.class); a null registration throws IOException('Mount table state store is not available.'), meaning the router's state store driver never registered the mount table record store, so refresh cycles cannot run.
Source
Thrown at hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/MountTableRefresherService.java:205
@Override
protected void serviceStart() throws Exception {
super.serviceStart();
}
@Override
protected void serviceStop() throws Exception {
super.serviceStop();
clientCacheCleanerScheduler.shutdown();
// remove and close all admin clients
routerClientsCache.invalidateAll();
}
private MountTableStore getMountTableStore() throws IOException {
MountTableStore mountTblStore =
router.getStateStore().getRegisteredRecordStore(MountTableStore.class);
if (mountTblStore == null) {
throw new IOException("Mount table state store is not available.");
}
return mountTblStore;
}
/**
* Refresh mount table cache of this router as well as all other routers.
*
* @throws StateStoreUnavailableException if the state store is not available.
*/
public void refresh() throws StateStoreUnavailableException {
RouterStore routerStore = router.getRouterStateManager();
try {
routerStore.loadCache(true);
} catch (IOException e) {
LOG.warn("RouterStore load cache failed,", e);
}
View on GitHub (pinned to 2add963021)
Solutions
- Verify dfs.federation.router.store.driver and backend connectivity (ZK ensemble / DB) from the router host
- Check StateStoreService initialization logs — MountTableStore registers during state store init; fix any preceding errors
- Restart the router after state store recovery so the refresher can fetch the store
- For custom state store drivers, ensure MountTableStore is registered during initialization
Defensive patterns
Strategy: validation
Validate before calling
// Check the store is registered before enabling/running the refresher
MountTableStore store = router.getStateStore()
.getRegisteredRecordStore(MountTableStore.class);
if (store == null) {
throw new IOException(
"MountTableStore not registered; state store driver/backend check required");
} Prevention
- Verify dfs.federation.router.store.driver and backend reachability before router start
- Watch for StateStoreService initialization errors in router logs
- Restart the router after state store recovery so the refresher re-binds the store
When it happens
Trigger: The router's StateStoreService is not initialized or failed (dfs.federation.router.store.driver misconfigured, ZooKeeper/DB backend unreachable at startup), a custom driver lacks MountTableStore registration, or the refresher runs before the state store registered its record stores.
Common situations: State store backend outage during router startup; wrong driver class in router configuration; routers in clusters where the state store schema/records were only partially initialized.
Related errors
- Mount Table not initialized
- Failed update mount table " + mount
- Failed update mount table " + mount + " with readonly=" + re
- Configured handlers dfs.federation.router.handler.count= %d
- State Store does not have an interface for {}
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/4550b2172a489f80.
Report an issue: GitHub.