EpicGames/lore · error

No local store settings found

Error message

No local store settings found

What it means

The server startup code computes the local store settings from the loaded configuration. That only makes sense when the store mode is `local` or `composite`; for any other store mode the config has no local store settings, and seeding a local store would be wrong. The server therefore aborts startup with this error to make the misconfiguration explicit rather than silently skipping store seeding.

Solutions

  1. Set the store mode in the server settings file to "local" (or "composite" if a composite store is intended) and supply the corresponding local store settings.
  2. If this deployment genuinely has no local store, remove or bypass the local-store seeding path instead of running the mode that requires it.
  3. Verify the store mode string matches an enum variant accepted by the settings deserializer (no typos, correct casing).

Example fix

// before (config)
store = { mode = "remote", ... }
// after
store = { mode = "local", local = { path = "/var/lib/lore/store" } }
Defensive patterns

Strategy: validation

Validate before calling

// Rust: validate settings before calling server_main
fn ensure_local_store_settings(settings: &Settings) -> Result<(), String> {
    match settings.store_mode {
        StoreMode::Local | StoreMode::Composite => Ok(()),
        other => Err(format!(
            "store mode {other:?} has no local store settings; use 'local' or 'composite'"
        )),
    }
}

Prevention

When it happens

Trigger: Calling `async_main` (via `server_main`) with a settings file whose store mode is neither "local" nor "composite" — e.g. mode set to some other backend/remote variant — so the match arm falls into the `_ =>` case and `seed_local_store` cannot proceed.

Common situations: Copying a config from a deployment that uses a remote or cluster store mode to a machine that expects local seeding; typos in the store-mode enum value in the settings file; upgrading the server while the config still carries a store mode that no longer supports local stores.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13). Data as JSON: /api/errors/35873036c84c3d9c. Report an issue: GitHub.

Appendix: source

Thrown at lore-server/src/server.rs:1780

        // We're ok assuming that local store settings are present when seeding is enabled, if it's
        // not let it panic, and we can fix the configuration.
        let local_store_settings = match mode.as_str() {
            store_mode::LOCAL => settings
                .immutable_store
                .local
                .clone()
                .ok_or(anyhow!("Missing local immutable store settings")),
            store_mode::COMPOSITE => settings
                .immutable_store
                .composite
                .as_ref()
                .and_then(|s| s.local.local.clone())
                .ok_or(anyhow!("Missing composite store settings")),
            _ => {
                // If store mode is not local or composite, there's no local store settings to be
                // had.
                Err(anyhow!("No local store settings found"))
            }
        }?;

        seed_local_store(&local_store_settings).await?;
    }

    // Configure topology using plugin registry
    let topology_provider = settings
        .topology
        .as_ref()
        .and_then(|t| t.provider.plugin_name());

    let topology = configure_topology_with_registry(
        &plugin_registry,
        settings.topology.as_ref(),
        &settings.plugins,
    )?;

View on GitHub (pinned to 074eb0b0d1)