{"record":{"id":"dc3da16ddd945d4f","repo":"EpicGames/lore","slug":"missing-replicated-store-settings","errorCode":null,"errorMessage":"Missing replicated store settings","messagePattern":"Missing replicated store settings","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lore-server/src/server.rs","lineNumber":905,"sourceCode":"                .ok_or(anyhow!(\"Missing local immutable store settings\"))?;\n\n            configure_local_immutable_store(local_settings).await\n        }\n        store_mode::COMPOSITE => {\n            let composite_settings = settings\n                .immutable_store\n                .composite\n                .as_ref()\n                .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","sourceCodeStart":887,"sourceCodeEnd":923,"githubUrl":"https://github.com/EpicGames/lore/blob/074eb0b0d1194c997d7cf28b55519e3e197b3e23/lore-server/src/server.rs#L887-L923","documentation":"Thrown by configure_immutable_store_via_plugin when mode is \"replicated\" but settings.immutable_store.replicated is None. A replicated store needs its replication settings (peers, quorum, etc.) to build; the missing section aborts startup.","triggerScenarios":"immutable_store.mode = \"replicated\" in config while settings.immutable_store.replicated is None (missing [immutable_store.replicated] subsection).","commonSituations":"Enabling replicated mode in a config migrated from single-node local mode; omitted peer/quorum settings; subsection typo preventing deserialization.","solutions":["Add an [immutable_store.replicated] section with peer/quorum settings.","Check the subsection key spelling against the Settings schema.","Use a mode whose settings block exists in the current config."],"exampleFix":"# before\n[immutable_store]\nmode = \"replicated\"\n\n# after\n[immutable_store]\nmode = \"replicated\"\n[immutable_store.replicated]\npeers = [\"node1:7000\", \"node2:7000\"]","handlingStrategy":"validation","validationCode":"if settings.immutable_store.mode == \"replicated\" && settings.immutable_store.replicated.is_none() {\n    return Err(anyhow!(\"mode=replicated requires [immutable_store.replicated] settings\"));\n}","typeGuard":"fn replicated_store_configured(s: &ImmutableStoreSettings) -> bool {\n    s.mode != \"replicated\" || s.replicated.is_some()\n}","tryCatchPattern":null,"preventionTips":["Provide peer/quorum settings whenever enabling replicated mode.","Keep single-node and replicated config variants as separate validated templates.","Check subsection keys against the schema after migrations."],"tags":["configuration","store","replication","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"}