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
- 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.
- If this deployment genuinely has no local store, remove or bypass the local-store seeding path instead of running the mode that requires it.
- 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
- Validate the store mode against supported variants at config-load time, before startup side effects.
- Keep per-mode example configs in the repo and lint deployments against them.
- Log the parsed store mode at startup so mismatches are obvious in ops output.
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
- presigned_url_hmac_key is not valid hex
- presigned_url_hmac_key must be at least
- {} {err}
- Failed to start maintenance HTTP server
- Failed to start HTTP server
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)