EpicGames/lore · error

Missing composite remote store settings

Error message

Missing composite remote store settings

What it means

When building a composite immutable store, each substore is configured by mode. If a substore's mode is 'remote', CompositeSubStoreSettings.remote must be populated; otherwise the server refuses to start because there are no remote endpoint/settings to build the remote store from.

Solutions

  1. Add the [immutable_store.composite.<name>.remote] settings table for the substore that declares mode = "remote"
  2. Change the substore's mode to one whose settings you actually have (e.g. "local")
  3. Validate the composite settings struct before starting the server (serde default/required field checks)

Example fix

# before
[[immutable_store.composite.main.stores]]
mode = "remote"

# after
[[immutable_store.composite.main.stores]]
mode = "remote"
[immutable_store.composite.main.stores.remote]
endpoints = ["http://remote-host:7447"]
Defensive patterns

Strategy: validation

Validate before calling

if store_mode == "remote" && composite_settings.remote.is_none() {
    return Err("substore mode 'remote' requires [immutable_store.composite.<name>.remote] settings");
}

Type guard

fn has_remote_settings(s: &CompositeSubStoreSettings) -> bool { s.remote.is_some() }

Try / catch

match configure_composite_substore(&registry, mode, &settings, sub).await {
    Err(e) if e.to_string().contains("Missing composite remote store settings") => {
        eprintln!("config error: add remote settings for substore '{mode}'"); std::process::exit(2);
    }
    r => r?,
}

Prevention

When it happens

Trigger: The TOML settings define a composite store whose subs tore list includes mode = "remote", but the settings table for that substore has no [immutable_store.composite.*.remote] section, so settings.remote is None when configure_composite_substore unwraps it.

Common situations: Hand-edited config files where the remote block was deleted or mistyped (e.g. [[...stores]] entry with mode="remote" but the matching remote table missing); copying a local-only composite example and switching a substore mode to remote without adding its settings; env var templating that dropped the remote section.

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/f988494c12d130f3. Report an issue: GitHub.

Appendix: source

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

    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()
                .ok_or(anyhow!("Missing composite replicated store settings"))?;

            configure_replicated_immutable_store(replicated_settings).await
        }
        _ => {
            // All other modes use the plugin system
            let plugin_config = resolve_plugin_config_with_fallback(
                &global_settings.plugins,

View on GitHub (pinned to 074eb0b0d1)