From 6d6f591daec6c1bc725216290b15df023e56bc69 Mon Sep 17 00:00:00 2001 From: hanabi1224 Date: Fri, 12 Sep 2025 16:55:32 +0800 Subject: [PATCH 1/3] fix: improve error messages in `forest-cli state compute` --- src/shim/state_tree.rs | 2 ++ src/state_manager/mod.rs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/shim/state_tree.rs b/src/shim/state_tree.rs index e11a66e38390..8007ae14ea45 100644 --- a/src/shim/state_tree.rs +++ b/src/shim/state_tree.rs @@ -171,6 +171,8 @@ where Ok(StateTree::FvmV2(st)) } else if let Ok(st) = super::state_tree_v0::StateTreeV0::new_from_root(store.clone(), c) { Ok(StateTree::V0(st)) + } else if !store.has(c)? { + bail!("No state tree found with root {c}.") } else { let state_root = store.get_cbor::(c).ok().flatten(); let state_root_version = state_root diff --git a/src/state_manager/mod.rs b/src/state_manager/mod.rs index 24de41efc66f..cd8f12649d81 100644 --- a/src/state_manager/mod.rs +++ b/src/state_manager/mod.rs @@ -857,6 +857,7 @@ where callback: Option) -> anyhow::Result<()>>, enable_tracing: VMTrace, ) -> Result { + let epoch = tipset.epoch(); Ok(apply_block_messages( self.chain_store().genesis_block_header().timestamp, Arc::clone(&self.chain_store().chain_index), @@ -866,7 +867,8 @@ where tipset, callback, enable_tracing, - )?) + ) + .map_err(|e| anyhow::anyhow!("Failed to compute tipset state@{epoch}: {e}"))?) } #[instrument(skip_all)] From 737a6d2b639ed1cc29d15af5b0e5d52669004ac7 Mon Sep 17 00:00:00 2001 From: hanabi1224 Date: Fri, 12 Sep 2025 17:08:31 +0800 Subject: [PATCH 2/3] apply AI suggestions --- src/state_manager/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/state_manager/mod.rs b/src/state_manager/mod.rs index cd8f12649d81..53845000c9ef 100644 --- a/src/state_manager/mod.rs +++ b/src/state_manager/mod.rs @@ -858,6 +858,7 @@ where enable_tracing: VMTrace, ) -> Result { let epoch = tipset.epoch(); + let has_callback = callback.is_some(); Ok(apply_block_messages( self.chain_store().genesis_block_header().timestamp, Arc::clone(&self.chain_store().chain_index), @@ -868,7 +869,13 @@ where callback, enable_tracing, ) - .map_err(|e| anyhow::anyhow!("Failed to compute tipset state@{epoch}: {e}"))?) + .map_err(|e| { + if has_callback { + e + } else { + anyhow::anyhow!("Failed to compute tipset state@{epoch}: {e}") + } + })?) } #[instrument(skip_all)] From 727fe2b2a63d3ba69ac9eaba1fa1ec535d460835 Mon Sep 17 00:00:00 2001 From: hanabi1224 Date: Mon, 15 Sep 2025 14:09:42 +0800 Subject: [PATCH 3/3] resolve comment --- src/shim/state_tree.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shim/state_tree.rs b/src/shim/state_tree.rs index 8007ae14ea45..a86b3fcb96c8 100644 --- a/src/shim/state_tree.rs +++ b/src/shim/state_tree.rs @@ -172,7 +172,7 @@ where } else if let Ok(st) = super::state_tree_v0::StateTreeV0::new_from_root(store.clone(), c) { Ok(StateTree::V0(st)) } else if !store.has(c)? { - bail!("No state tree found with root {c}.") + bail!("No state tree exists for the root {c}.") } else { let state_root = store.get_cbor::(c).ok().flatten(); let state_root_version = state_root