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

  1. Verify dfs.federation.router.store.driver names a supported driver (StateStoreZooKeeperImpl, StateStoreFileSystemImpl, StateStoreFileImpl, StateStoreHBaseImpl, StateStoreDBImpl) and the backend is reachable
  2. Check router startup logs for StateStoreService/record registration errors preceding this exception
  3. Restart the router after fixing state store connectivity so stores re-register
  4. 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

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


AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22). Data as JSON: /api/errors/529cf9beba7ba2a9. Report an issue: GitHub.