{"record":{"id":"59ebf0db3b96fd95","repo":"EpicGames/lore","slug":"failed-to-create-mode-immutable-store-e","errorCode":null,"errorMessage":"Failed to create {mode} immutable store: {e}","messagePattern":"Failed to create (.+?) immutable store: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lore-server/src/server.rs","lineNumber":1446,"sourceCode":"                .as_ref()\n                .ok_or(anyhow!(\"Missing composite replicated store settings\"))?;\n\n            configure_replicated_immutable_store(replicated_settings).await\n        }\n        _ => {\n            // All other modes use the plugin system\n            let plugin_config = resolve_plugin_config_with_fallback(\n                &global_settings.plugins,\n                mode,\n                \"immutable_store\",\n            )\n            .unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));\n\n            info!(mode, \"Creating composite substore via plugin system\");\n\n            let store = registry\n                .create_immutable_store(mode, &plugin_config)\n                .map_err(|e| anyhow!(\"Failed to create {mode} immutable store: {e}\"))?;\n\n            Ok(store)\n        }\n    }\n}\n\nasync fn configure_notification(\n    endpoints: &mut JoinSet<Result<()>>,\n    registry: &PluginRegistry,\n    environment: &Option<EnvironmentConfig>,\n    notification_settings: &Option<NotificationSettings>,\n    immutable_store: Option<&Arc<dyn ImmutableStore>>,\n    plugins: &HashMap<String, toml::Value>,\n) -> Result<(Arc<dyn NotificationSender>, Option<NotificationService>)> {\n    let mode = notification_settings\n        .as_ref()\n        .map_or(\"local\", |ns| ns.mode.as_ref());\n    match mode {","sourceCodeStart":1428,"sourceCodeEnd":1464,"githubUrl":"https://github.com/EpicGames/lore/blob/074eb0b0d1194c997d7cf28b55519e3e197b3e23/lore-server/src/server.rs#L1428-L1464","documentation":"For substore modes that are not local/remote/composite/replicated, the server falls back to the plugin registry to create the immutable store. If the plugin's create_immutable_store call fails (unknown plugin, bad plugin config, plugin-internal error), the error is wrapped with this message naming the mode.","triggerScenarios":"settings.immutable_store.composite lists a substore mode that matches no built-in arm and for which no immutable-store plugin is registered under that name; or the plugin is registered but its config TOML is invalid, causing create_immutable_store to return Err.","commonSituations":"Misspelled custom store mode in TOML; plugin feature flag not enabled at build time so the plugin was never registered; plugin config section wrong or empty because resolve_plugin_config_with_fallback fell back to an empty table.","solutions":["Check the 'Registered plugins - immutable stores: ...' startup log line to confirm the plugin for this mode is registered","Enable the cargo feature that provides the store plugin, or install/register it in the plugin registry","Fix the [plugins.<mode>] TOML config section so the plugin accepts it"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if !registry.list_immutable_store_plugins().contains(&mode.to_string()) {\n    return Err(format!(\"no immutable store plugin registered for mode '{mode}'\"));\n}","typeGuard":null,"tryCatchPattern":"match registry.create_immutable_store(mode, &plugin_config) {\n    Ok(store) => store,\n    Err(e) => return Err(anyhow!(\"Failed to create {mode} immutable store: {e}\"\n        )).with_context(|| format!(\"check that plugin '{mode}' is compiled in and [plugins.{mode}] config is valid\")),\n}","preventionTips":["Check the startup log line 'Registered plugins - immutable stores: ...' to confirm your plugin is loaded","Enable the cargo feature providing the plugin before deploying","Keep [plugins.<mode>] config sections aligned with the plugin's expected schema"],"tags":["plugin","configuration","rust"],"backgroundTag":"module-init-failed","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"}