EpicGames/lore · error

Failed to create immutable store plugin

Error message

Failed to create immutable store plugin '{mode}': {e}

What it means

Wraps an error from registry.create_immutable_store when the configured mode is not one of the built-in modes and is dispatched to the plugin system instead. The plugin failed to construct the immutable store for the given mode/config; the message includes the mode and the underlying plugin error.

Solutions

  1. Read the wrapped '{e}' message and fix the plugin-specific configuration under [immutable_store.<mode>].
  2. Verify the plugin for the given mode is registered in the PluginRegistry before configuration runs.
  3. Check the mode string spelling in immutable_store.mode.
  4. Confirm plugin compatibility with the current server version and that any plugin dependency is installed.

Example fix

# before
[immutable_store]
mode = "s3plugn"  # typo, plugin not found

# after
[immutable_store]
mode = "s3plugin"
[immutable_store.s3plugin]
bucket = "my-bucket"
Defensive patterns

Strategy: try-catch

Validate before calling

if !builtin_modes.contains(&settings.immutable_store.mode.as_str()) {
    ensure!(registry.has_immutable_plugin(&settings.immutable_store.mode), "no plugin registered for mode '{}'", settings.immutable_store.mode);
}

Try / catch

match configure_immutable_store_via_plugin(&registry, &settings, &topology).await {
    Err(e) if e.to_string().starts_with("Failed to create immutable store plugin") => {
        eprintln!("plugin store init failed; check plugin registration and its config: {e}");
    }
    other => other?,
}

Prevention

When it happens

Trigger: immutable_store.mode is a plugin-managed value (not local/composite/replicated/remote) and registry.create_immutable_store(mode, &plugin_config) returns Err — e.g. plugin not registered, plugin init failed, or plugin_config (the TOML table under the mode) is invalid.

Common situations: Custom store mode typo'd or no plugin registered for it; plugin binary/library missing from the registry; plugin-specific config keys wrong or empty; plugin incompatible with the server version.

Related errors


AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13). Data as JSON: /api/errors/0883d7b09491547a. Report an issue: GitHub.

Appendix: source

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

            let remote_settings = settings
                .immutable_store
                .remote
                .as_ref()
                .ok_or(anyhow!("Missing remote immutable store settings"))?;

            configure_remote_immutable_store(remote_settings)
        }
        _ => {
            // All other modes use the plugin system
            let plugin_config =
                resolve_plugin_config_with_fallback(&settings.plugins, mode, "immutable_store")
                    .unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));

            info!(mode, "Creating immutable store via plugin system");

            registry
                .create_immutable_store(mode, &plugin_config)
                .map_err(|e| anyhow!("Failed to create immutable store plugin '{mode}': {e}"))
        }
    }
}

async fn configure_mutable_store_via_plugin(
    registry: &PluginRegistry,
    settings: &Settings,
    immutable_store: Arc<dyn ImmutableStore>,
) -> Result<Arc<dyn MutableStore>> {
    let mode = &settings.mutable_store.mode;

    match mode.as_str() {
        store_mode::LOCAL => {
            let local_settings = settings
                .mutable_store
                .local
                .as_ref()
                .ok_or(anyhow!("Missing local mutable store settings"))?;

View on GitHub (pinned to 074eb0b0d1)