EpicGames/lore · error
Failed to create immutable store
Error message
Failed to create {mode} immutable store: {e} What it means
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.
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
Defensive patterns
Strategy: try-catch
Validate before calling
if !registry.list_immutable_store_plugins().contains(&mode.to_string()) {
return Err(format!("no immutable store plugin registered for mode '{mode}'"));
} Try / catch
match registry.create_immutable_store(mode, &plugin_config) {
Ok(store) => store,
Err(e) => return Err(anyhow!("Failed to create {mode} immutable store: {e}"
)).with_context(|| format!("check that plugin '{mode}' is compiled in and [plugins.{mode}] config is valid")),
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- [environment.endpoint] auth_url is set but [server.auth] is…
- [environment.endpoint] auth_url and [server.auth]…
- Maintenance TLS is partially configured: cert_file and…
- No alpns provided
- Missing QUIC certificate config
AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13).
Data as JSON: /api/errors/59ebf0db3b96fd95.
Report an issue: GitHub.
Appendix: source
Thrown at lore-server/src/server.rs:1446
.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,
mode,
"immutable_store",
)
.unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));
info!(mode, "Creating composite substore via plugin system");
let store = registry
.create_immutable_store(mode, &plugin_config)
.map_err(|e| anyhow!("Failed to create {mode} immutable store: {e}"))?;
Ok(store)
}
}
}
async fn configure_notification(
endpoints: &mut JoinSet<Result<()>>,
registry: &PluginRegistry,
environment: &Option<EnvironmentConfig>,
notification_settings: &Option<NotificationSettings>,
immutable_store: Option<&Arc<dyn ImmutableStore>>,
plugins: &HashMap<String, toml::Value>,
) -> Result<(Arc<dyn NotificationSender>, Option<NotificationService>)> {
let mode = notification_settings
.as_ref()
.map_or("local", |ns| ns.mode.as_ref());
match mode {View on GitHub (pinned to 074eb0b0d1)