EpicGames/lore · error

replicated mutable store is not implemented

Error message

replicated mutable store is not implemented

What it means

The store_mode::REPLICATED arm of configure_mutable_store_via_plugin is a hard-coded `Err(anyhow!(...))`: replicated mutable stores are a recognized mode but no implementation exists, so any config selecting mode = "replicated" for the mutable store fails at startup. This is an explicit feature-not-implemented guard, not a runtime failure.

Solutions

  1. Change mutable_store.mode to an implemented mode: "local", "remote", or a plugin-backed mode.
  2. If replication is required for the mutable store, implement a plugin and select that plugin mode instead of "replicated".
  3. Check the lore-server version/changelog: replicated mutable store may not exist in your release.

Example fix

// before (settings.toml)
[mutable_store]
mode = "replicated"

// after (settings.toml)
[mutable_store]
mode = "local"

[mutable_store.local]
path = "/var/lib/lore/mutable"
Defensive patterns

Strategy: validation

Validate before calling

// Rust
fn validate_mutable_mode(settings: &Settings) -> Result<(), String> {
    if settings.mutable_store.mode == "replicated" {
        return Err("replicated mutable store is not implemented; use local/remote or a plugin".into());
    }
    Ok(())
}

Prevention

When it happens

Trigger: Settings set `[mutable_store] mode = "replicated"`; startup reaches the REPLICATED arm and unconditionally returns this error.

Common situations: Copying the immutable-store configuration (where "replicated" is supported, see the immutable dispatch around server.rs:900) to the mutable section; experimenting with replication after reading immutable-store docs; a tool generating configs from a mode list that includes replicated.

Related errors


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

Appendix: source

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

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

            configure_local_mutable_store(local_settings, immutable_store).await
        }
        store_mode::REMOTE => {
            let remote_settings = settings
                .mutable_store
                .remote
                .as_ref()
                .ok_or(anyhow!("Missing remote mutable store settings"))?;

            configure_remote_mutable_store(remote_settings)
        }
        store_mode::REPLICATED => Err(anyhow!("replicated mutable store is not implemented")),
        store_mode::COMPOSITE => Err(anyhow!(
            "Invalid settings, cannot have composite store as mutable store"
        )),
        _ => {
            // All other modes use the plugin system
            let plugin_config =
                resolve_plugin_config_with_fallback(&settings.plugins, mode, "mutable_store")
                    .unwrap_or_else(|| toml::Value::Table(toml::map::Map::new()));

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

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

View on GitHub (pinned to 074eb0b0d1)