diff --git a/src/cli/admin.rs b/src/cli/admin.rs index e07009b..1387323 100644 --- a/src/cli/admin.rs +++ b/src/cli/admin.rs @@ -59,8 +59,9 @@ pub async fn cmd_init() -> Result<()> { Ok(()) } -pub fn cmd_fsck() -> Result<()> { - let mut store = store::Store::load()?; +pub async fn cmd_fsck() -> Result<()> { + let arc = memory::access_local()?; + let mut store = arc.lock().await; // Check cache vs log consistency let log_store = store::Store::load_from_logs()?; @@ -92,7 +93,7 @@ pub fn cmd_fsck() -> Result<()> { if cache_issues > 0 { eprintln!("{} cache inconsistencies found — rebuilding from logs", cache_issues); - store = log_store; + *store = log_store; store.save().context("rebuild save")?; } diff --git a/src/hippocampus/store/view.rs b/src/hippocampus/store/view.rs index 98bb4ca..80d7bd8 100644 --- a/src/hippocampus/store/view.rs +++ b/src/hippocampus/store/view.rs @@ -6,7 +6,6 @@ use super::types::*; -use anyhow::Result; use std::fs; // --------------------------------------------------------------------------- @@ -185,17 +184,6 @@ pub enum AnyView { Owned(Store), } -impl AnyView { - /// Load the fastest available view: mmap snapshot or owned store. - pub fn load() -> Result { - if let Some(mv) = MmapView::open() { - Ok(AnyView::Mmap(mv)) - } else { - Ok(AnyView::Owned(Store::load()?)) - } - } -} - impl StoreView for AnyView { fn for_each_node(&self, f: F) { match self { AnyView::Mmap(v) => v.for_each_node(f), AnyView::Owned(s) => s.for_each_node(f) } diff --git a/src/main.rs b/src/main.rs index a3b52e6..da066ac 100644 --- a/src/main.rs +++ b/src/main.rs @@ -460,7 +460,7 @@ impl Run for AdminCmd { Self::Init => cli::admin::cmd_init().await, Self::Health => cli::admin::cmd_health().await, Self::Topology => cli::admin::cmd_topology().await, - Self::Fsck => cli::admin::cmd_fsck(), + Self::Fsck => cli::admin::cmd_fsck().await, Self::Dedup { apply } => cli::admin::cmd_dedup(apply).await, Self::DailyCheck => cli::admin::cmd_daily_check().await, Self::Import { files } => cli::admin::cmd_import(&files).await,