EpicGames/lore · error
Failed to create local store
Error message
Failed to create local store
What it means
The same helper then creates the local (second) ImmutableStore and panics with this message if that creation fails. Functionally identical to the main-store failure but for the local store used to verify local-routing behavior.
Solutions
- Inspect the underlying test_store_create error for the local store specifically
- Ensure the two stores use distinct, isolated paths/identities so they don't collide
- Free CI resources or reduce parallel test concurrency that starves store creation
- Update the helper if store creation API changed
Example fix
// before
let (local_store, _, _) = test_store_create().await.expect("Failed to create local store");
// after
let (local_store, _, _) = test_store_create().await
.unwrap_or_else(|e| panic!("Failed to create local store: {e:?}")); Defensive patterns
Strategy: fallback
Validate before calling
// preflight resources before creating the second store assert!(free_disk(temp_parent) > MIN_STORE_BYTES, "insufficient space for local test store");
Try / catch
match test_store_create().await {
Ok((local_store, _, _)) => { /* use local store */ },
Err(e) => panic!("local store init failed: {e:?}"),
} Prevention
- Give main and local stores distinct isolated paths/identities
- Monitor CI resource caps (disk, inodes, memory) that second stores can exhaust
- Run the routing tests serially if concurrent store creation is flaky
- Surface underlying errors with unwrap_or_else(panic!) for diagnosis
When it happens
Trigger: test_store_create fails for the second store: backend resource exhaustion, conflicting store identity/configuration, or environment limits hit after the first store was already created.
Common situations: Tests creating two stores in one process exceeding configured limits, temp-dir collisions between main and local stores, or CI resource caps (inodes, memory) reached mid-test.
Related errors
- Failed to create main store
- put should work
- Cannot configure gRPC internal server, no local store
- handler should succeed even for a miss
- Failed to parse
AI-assisted analysis of EpicGames/lore@074eb0b0d1 (2026-09-13).
Data as JSON: /api/errors/a3d6073f3fba60e7.
Report an issue: GitHub.
Appendix: source
Thrown at lore-server/src/quic/replication_store_service/server.rs:1074
.await
.expect("handler should succeed even for a miss");
let parsed_response =
get_metadata::parse_response(collapse_bytes(&service_output)).expect("Failed to parse");
assert_eq!(parsed_response.match_made, StoreMatch::MatchNone);
}
/// Helper to create a second independent store for local-store routing tests
async fn create_two_stores() -> (
Arc<dyn ImmutableStore>,
Arc<dyn ImmutableStore>,
Arc<lore_revision::interface::ExecutionContext>,
) {
let (main_store, _, execution) = test_store_create()
.await
.expect("Failed to create main store");
let (local_store, _, _) = test_store_create()
.await
.expect("Failed to create local store");
(main_store, local_store, execution)
}
#[tokio::test]
async fn immutable_local_query_routes_to_local_store() {
let (main_store, local_store, execution) = create_two_stores().await;
let repository = random::<Context>();
let (fragment, address, payload) = fragment::generate_random();
// put data only in the local store
{
let local_store = local_store.clone();
LORE_CONTEXT
.scope(execution.clone(), async move {
local_store
.put(repository.into(), address, fragment, Some(payload), false)
.awaitView on GitHub (pinned to 074eb0b0d1)