{"record":{"id":"52dabf970ea6b03d","repo":"EpicGames/lore","slug":"missing-remote-immutable-store-settings","errorCode":null,"errorMessage":"Missing remote immutable store settings","messagePattern":"Missing remote immutable store settings","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lore-server/src/server.rs","lineNumber":914,"sourceCode":"                .ok_or(anyhow!(\"Missing composite store settings\"))?;\n\n            configure_composite_store(registry, composite_settings, settings, topology).await\n        }\n        store_mode::REPLICATED => {\n            let replicated_settings = settings\n                .immutable_store\n                .replicated\n                .as_ref()\n                .ok_or(anyhow!(\"Missing replicated store settings\"))?;\n\n            configure_replicated_immutable_store(replicated_settings).await\n        }\n        store_mode::REMOTE => {\n            let remote_settings = settings\n                .immutable_store\n                .remote\n                .as_ref()\n                .ok_or(anyhow!(\"Missing remote immutable store settings\"))?;\n\n            configure_remote_immutable_store(remote_settings)\n        }\n        _ => {\n            // All other modes use the plugin system\n            let plugin_config =\n                resolve_plugin_config_with_fallback(&settings.plugins, mode, \"immutable_store\")\n                    .unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));\n\n            info!(mode, \"Creating immutable store via plugin system\");\n\n            registry\n                .create_immutable_store(mode, &plugin_config)\n                .map_err(|e| anyhow!(\"Failed to create immutable store plugin '{mode}': {e}\"))\n        }\n    }\n}\n","sourceCodeStart":896,"sourceCodeEnd":932,"githubUrl":"https://github.com/EpicGames/lore/blob/074eb0b0d1194c997d7cf28b55519e3e197b3e23/lore-server/src/server.rs#L896-L932","documentation":"Thrown by configure_immutable_store_via_plugin when mode is \"remote\" but settings.immutable_store.remote is None. Remote stores need endpoint/connection settings; without them the store cannot be constructed and startup aborts.","triggerScenarios":"immutable_store.mode = \"remote\" in config while settings.immutable_store.remote is None (missing [immutable_store.remote] subsection).","commonSituations":"Pointing the mode at a remote backend without adding its endpoint settings; config migration dropping the subsection; typo in the TOML key.","solutions":["Add an [immutable_store.remote] section with endpoint/connection settings.","Verify the subsection key matches the Settings schema.","Pick a mode consistent with the config sections provided."],"exampleFix":"# before\n[immutable_store]\nmode = \"remote\"\n\n# after\n[immutable_store]\nmode = \"remote\"\n[immutable_store.remote]\nendpoint = \"http://remote-host:9000\"","handlingStrategy":"validation","validationCode":"if settings.immutable_store.mode == \"remote\" && settings.immutable_store.remote.is_none() {\n    return Err(anyhow!(\"mode=remote requires [immutable_store.remote] settings\"));\n}","typeGuard":"fn remote_store_configured(s: &ImmutableStoreSettings) -> bool {\n    s.mode != \"remote\" || s.remote.is_some()\n}","tryCatchPattern":null,"preventionTips":["Always supply endpoint/connection settings when selecting remote mode.","Validate mode/subsection pairing at startup before touching stores.","Keep remote backend credentials and endpoints in the dedicated subsection only."],"tags":["configuration","store","startup"],"backgroundTag":"missing-required-config-field","analyzedSha":"074eb0b0d1194c997d7cf28b55519e3e197b3e23","analyzedAt":"2026-09-13T09:00:57.509Z","contentChangedAt":"2026-09-13T09:00:57.509Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}