EpicGames/lore · error
Missing max size on local store settings
Error message
Missing max size on local store settings
What it means
Seeding (enabled by the 'seeding' cargo feature and the LORE_SEEDING env var) fills the local immutable store up to a capacity limit taken from LocalImmutableStoreSettings.max_size. If LORE_SEEDING is set but max_size is None, seeding cannot know when to stop and returns this error.
Solutions
- Set max_size under [immutable_store.local] in the config used for the seeding run
- Unset the LORE_SEEDING env var if seeding was not intended
- Fail fast in deployment scripts: check that max_size is configured whenever LORE_SEEDING is exported
Example fix
# before [immutable_store.local] path = "/data/store" # after [immutable_store.local] path = "/data/store" max_size = 1000000000
Defensive patterns
Strategy: validation
Validate before calling
if std::env::var("LORE_SEEDING").is_ok() && settings.max_size.is_none() {
return Err("LORE_SEEDING is set but immutable_store.local.max_size is not configured");
} Type guard
fn seedable(s: &LocalImmutableStoreSettings) -> bool { s.max_size.is_some() } Try / catch
match seed_local_store(&local_store_settings).await {
Err(e) if e.to_string().contains("Missing max size") => {
eprintln!("set max_size under [immutable_store.local] or unset LORE_SEEDING"); std::process::exit(2);
}
r => r?,
} Prevention
- Only export LORE_SEEDING in environments whose config includes max_size
- Assert seeding prerequisites in deployment scripts before launching the server
- Keep seeding and production configs as separate files
When it happens
Trigger: LORE_SEEDING env var is set, the store mode resolves to local settings, but the [immutable_store.local] config lacks a max_size key, so max_size is None in seed_local_store.
Common situations: CI/test seeding runs against a config written for production that omits max_size; recently removed max_size while still exporting LORE_SEEDING in the environment.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
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/baf5dbe5f2482ee2.
Report an issue: GitHub.
Appendix: source
Thrown at lore-server/src/server.rs:1591
let result = lore_revision::store::seeder::seed_local_store(
local_store,
max_size,
margin,
buffer,
)
.await
.map_err(anyhow::Error::from);
info!("Done seeding local store, flushing store to disk.");
// Since we effectively disabled background flushing, we force a flush once seeding is
// complete
store.flush(true).await.map_err(anyhow::Error::from)?;
info!("Done flushing store to disk.");
result
} else {
warn!("Seeding was requested, but no max size was found.");
Err(anyhow!("Missing max size on local store settings"))
}
} else {
info!("Not seeding local store");
Ok(())
}
}
fn observe_task_lifecycles() {
let meter = lore_telemetry::meter("lore.runtime");
let spawned_tasks = meter
.u64_counter("lore.runtime.tasks.spawned.total")
.build();
let inflight_tasks = meter
.i64_up_down_counter("lore.runtime.tasks.running.total")
.build();
let callback = move |event: LoreTaskLifecycleEvent, spawn_location: &LoreTaskSpawnLocation| {
let context_label = if let Some(context) = lore_revision::runtime::try_execution_context() {View on GitHub (pinned to 074eb0b0d1)