EpicGames/lore · error
Missing composite local store settings
Error message
Missing composite local store settings
What it means
configure_composite_substore builds the sub-stores of a composite immutable store. For the store_mode::LOCAL arm it unwraps the optional `local` sub-settings with `.ok_or(anyhow!("Missing composite local store settings"))`; if the composite immutable store declares a local sub-store but the local settings block is absent, startup fails with this error. It is the composite analogue of the plain missing-local error.
Solutions
- Add the missing local sub-store table under the composite settings (e.g. [immutable_store.composite.local]) with its required keys.
- Confirm the nesting level: sub-store settings must live under the composite section, not the top-level store section.
- If the local tier is not wanted, adjust the composite configuration to only include the sub-stores you configured.
Example fix
// before (settings.toml) [immutable_store] mode = "composite" [immutable_store.composite] # local sub-store declared but not configured // after (settings.toml) [immutable_store] mode = "composite" [immutable_store.composite.local] path = "/var/lib/lore/immutable"
Defensive patterns
Strategy: validation
Validate before calling
// Rust
fn validate_composite_local(settings: &Settings) -> Result<(), String> {
let composite = &settings.immutable_store.composite;
if composite.mode == "local" && composite.local.is_none() {
return Err("composite sub-store 'local' requires local settings".into());
}
Ok(())
} Type guard
fn has_composite_local(s: &Settings) -> bool {
s.immutable_store.composite.local.is_some()
} Prevention
- Keep composite sub-store tables nested under the composite section, not at the store root.
- Validate the composite config (all listed sub-stores have settings) before deployment.
- When removing a sub-store table, update the composite mode/sub-store list in the same change.
When it happens
Trigger: Settings use an immutable composite store whose composite config requires a local sub-store (mode "local") but `settings.<composite>.local` is None when configure_composite_substore dispatches on LOCAL.
Common situations: Writing a composite config that names local/remote sub-stores but omitting the per-sub-store tables; hand-merging configs where the [*.composite.local] section was dropped; schema drift after upgrading lore-server so the local block is nested in the wrong place.
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
- [environment.endpoint] auth_url is set but [server.auth] is…
- [environment.endpoint] auth_url and [server.auth]…
- Missing gRPC settings
- Missing gRPC internal settings
- Missing local immutable store settings
AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13).
Data as JSON: /api/errors/cb94f24d4cb87ef0.
Report an issue: GitHub.
Appendix: source
Thrown at lore-server/src/server.rs:1410
.set_topology_subscription(topology.clone())
.await;
}
Ok(store)
}
async fn configure_composite_substore(
registry: &PluginRegistry,
mode: &str,
global_settings: &Settings,
settings: &CompositeSubStoreSettings,
) -> Result<Arc<dyn ImmutableStore>> {
match mode {
store_mode::LOCAL => {
let local_settings = settings
.local
.as_ref()
.ok_or(anyhow!("Missing composite local store settings"))?;
configure_local_immutable_store(local_settings).await
}
store_mode::REMOTE => {
let remote_settings = settings
.remote
.as_ref()
.ok_or(anyhow!("Missing composite remote store settings"))?;
configure_remote_immutable_store(remote_settings)
}
store_mode::COMPOSITE => Err(anyhow!(
"Composite store not supported as a composite substore"
)),
store_mode::REPLICATED => {
let replicated_settings = settings
.replicated
.as_ref()View on GitHub (pinned to 074eb0b0d1)