From 08d5c0358a7c033fc6df670d45fd941ed0eed87b Mon Sep 17 00:00:00 2001 From: andrussal Date: Fri, 5 Dec 2025 03:29:34 +0100 Subject: [PATCH] Precreate recovery state files for local nodes --- testing-framework/core/src/nodes/executor.rs | 17 +++++++++++++++-- testing-framework/core/src/nodes/validator.rs | 17 +++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/testing-framework/core/src/nodes/executor.rs b/testing-framework/core/src/nodes/executor.rs index 08d7b28..3cf64b0 100644 --- a/testing-framework/core/src/nodes/executor.rs +++ b/testing-framework/core/src/nodes/executor.rs @@ -146,8 +146,21 @@ impl Executor { let config_path = dir.path().join("executor.yaml"); let file = std::fs::File::create(&config_path).unwrap(); - // Ensure recovery directory exists so services that persist state do not fail. - let _ = std::fs::create_dir_all(dir.path().join("recovery")); + // Ensure recovery files/dirs exist so services that persist state do not fail + // on startup. + let recovery_dir = dir.path().join("recovery"); + let _ = std::fs::create_dir_all(&recovery_dir); + let mempool_path = recovery_dir.join("mempool.json"); + if !mempool_path.exists() { + let _ = std::fs::write(&mempool_path, "{}"); + } + let blend_core_path = recovery_dir.join("blend").join("core.json"); + if let Some(parent) = blend_core_path.parent() { + let _ = std::fs::create_dir_all(parent); + } + if !blend_core_path.exists() { + let _ = std::fs::write(&blend_core_path, "{}"); + } if !*IS_DEBUG_TRACING { if let Ok(env_dir) = std::env::var("NOMOS_LOG_DIR") { diff --git a/testing-framework/core/src/nodes/validator.rs b/testing-framework/core/src/nodes/validator.rs index f7264e3..6e82e61 100644 --- a/testing-framework/core/src/nodes/validator.rs +++ b/testing-framework/core/src/nodes/validator.rs @@ -173,8 +173,21 @@ impl Validator { let config_path = dir.path().join("validator.yaml"); let file = std::fs::File::create(&config_path).unwrap(); - // Ensure recovery directory exists so services that persist state do not fail. - let _ = std::fs::create_dir_all(dir.path().join("recovery")); + // Ensure recovery files/dirs exist so services that persist state do not fail + // on startup. + let recovery_dir = dir.path().join("recovery"); + let _ = std::fs::create_dir_all(&recovery_dir); + let mempool_path = recovery_dir.join("mempool.json"); + if !mempool_path.exists() { + let _ = std::fs::write(&mempool_path, "{}"); + } + let blend_core_path = recovery_dir.join("blend").join("core.json"); + if let Some(parent) = blend_core_path.parent() { + let _ = std::fs::create_dir_all(parent); + } + if !blend_core_path.exists() { + let _ = std::fs::write(&blend_core_path, "{}"); + } if !*IS_DEBUG_TRACING { if let Ok(env_dir) = std::env::var("NOMOS_LOG_DIR") {