Skip to content

refactor: no Arc wrapper around ChainIndex and ZstdFrameCache#6889

Merged
hanabi1224 merged 3 commits intomainfrom
hm/no-arc-1
Apr 13, 2026
Merged

refactor: no Arc wrapper around ChainIndex and ZstdFrameCache#6889
hanabi1224 merged 3 commits intomainfrom
hm/no-arc-1

Conversation

@hanabi1224
Copy link
Copy Markdown
Contributor

@hanabi1224 hanabi1224 commented Apr 10, 2026

Summary of changes

Changes introduced in this pull request:

Reference issue to close (if applicable)

Closes

Other information and links

Change checklist

  • I have performed a self-review of my own code,
  • I have made corresponding changes to the documentation. All new code adheres to the team's documentation standards,
  • I have added tests that prove my fix is effective or that my feature works (if possible),
  • I have made sure the CHANGELOG is up-to-date. All user-facing changes should be reflected in this document.

Outside contributions

  • I have read and agree to the CONTRIBUTING document.
  • I have read and agree to the AI Policy document. I understand that failure to comply with the guidelines will lead to rejection of the pull request.

Summary by CodeRabbit

  • Refactor
    • Simplified ownership and cloning across indexing, state, and CAR caching to reduce overhead.
    • Introduced a lightweight shallow-clone mechanism so shared data is copied more cheaply.
    • Cache bookkeeping changed to share size counters to reduce memory churn.
    • Concurrency paths updated to use shallow cloning for spawned tasks.
    • No user-facing behavioral changes; functionality and APIs remain effectively unchanged.

@hanabi1224 hanabi1224 marked this pull request as ready for review April 10, 2026 11:13
@hanabi1224 hanabi1224 requested a review from a team as a code owner April 10, 2026 11:13
@hanabi1224 hanabi1224 requested review from LesnyRumcajs and akaladarshi and removed request for a team April 10, 2026 11:13
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 10, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: df09c399-97a1-4327-ac4b-002b287bfd39

📥 Commits

Reviewing files that changed from the base of the PR and between 4265bef and ac71a90.

📒 Files selected for processing (2)
  • src/message_pool/msgpool/mod.rs
  • src/utils/shallow_clone.rs
✅ Files skipped from review due to trivial changes (1)
  • src/utils/shallow_clone.rs
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/message_pool/msgpool/mod.rs

Walkthrough

Removed nested Arc wrappers around ChainIndex, introduced a ShallowClone trait and implementations, switched many .clone() uses to .shallow_clone(), changed various fields/parameters from Arc<ChainIndex<Arc<DB>>> to ChainIndex<DB>, and updated ZstdFrameCache and cache types to share internal counters via Arc.

Changes

Cohort / File(s) Summary
ChainIndex core
src/chain/store/chain_store.rs, src/chain/store/index.rs
ChainIndex now stores db: Arc<DB> and constructors/db() updated to accept/return Arc<DB>; ChainStore and accessors no longer expose Arc<ChainIndex<Arc<DB>>> but ChainIndex<DB>; is_tipset_finalized callback uses Arc<dyn ...>; added ShallowClone for ChainIndex.
State & execution layers
src/state_manager/..., src/interpreter/*.rs, src/interpreter/vm.rs
Replaced fields/params typed Arc<ChainIndex<Arc<DB>>> with ChainIndex<DB>; call sites pass &chain_index or chain_index.shallow_clone(); Clone impls converted to ShallowClone where appropriate.
Zstd frame cache & CARs
src/db/car/mod.rs, src/db/car/forest.rs, src/db/car/many.rs, src/db/car/any.rs
ZstdFrameCache.current_size -> Arc<AtomicUsize>; ZstdFrameCache gains ShallowClone; ForestCar/ManyCar/AnyCar own ZstdFrameCache (non-Arc) and use shallow_clone() when sharing.
Tipset & caches
src/blocks/tipset.rs, src/utils/cache/lru.rs, src/chain_sync/bad_block_cache.rs
Added ShallowClone impls (Tipset, SizeTrackingLruCache, SeenBlockCache); removed automatic Clone derives and made shallow clones share underlying storage.
Chain sync & network
src/chain_sync/chain_follower.rs, src/chain_sync/network_context.rs, src/chain_sync/tipset_syncer.rs
Replaced .clone() with .shallow_clone() for contexts captured by tasks; SyncNetworkContext implements ShallowClone instead of Clone.
RPC & handlers
src/rpc/mod.rs, src/rpc/methods/*.rs
RPCState::chain_index() returns &ChainIndex<DB>; many RPC handlers now use Tipset::shallow_clone(); adjusted trait bounds and added manual Clone impl for PathChange<T> where needed.
Tools, CLI & daemon
src/tool/subcommands/*, src/daemon/*, src/cli/subcommands/*, src/dev/subcommands/*
Local command and tool call sites updated to construct/pass plain ChainIndex<DB> or &ChainIndex<DB> and to use shallow_clone() for tipsets and shared contexts; added imports for ShallowClone.
Utilities
src/utils/mod.rs, src/utils/shallow_clone.rs
Added ShallowClone trait module and public re-export; impls for Arc<T> and Option<T> to support shallow-copy semantics across codebase.
Misc small updates
src/chain/mod.rs, src/message_pool/*, src/fil_cns/*, src/blocks/*
Numerous .clone().shallow_clone() replacements and small signature/call-site adjustments to match new ownership shapes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • akaladarshi
  • LesnyRumcajs
  • sudo-shashank
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main refactoring objective: removing Arc wrappers around ChainIndex and ZstdFrameCache, which is directly supported by the extensive changes across the codebase.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hm/no-arc-1
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch hm/no-arc-1

Comment @coderabbitai help to get the list of available commands and usage tips.

@hanabi1224 hanabi1224 added the RPC requires calibnet RPC checks to run on CI label Apr 10, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
src/chain/store/index.rs (1)

82-84: Avoid leaking Arc through the public accessor.

Returning &Arc<DB> forces every caller to couple to the new ownership strategy. Keeping db() as &DB and adding a separate owned/Arc-returning helper would contain this refactor to the few sites that actually need to clone the store.

♻️ Possible API shape
-    pub fn db(&self) -> &Arc<DB> {
-        &self.db
-    }
+    pub fn db(&self) -> &DB {
+        self.db.as_ref()
+    }
+
+    pub fn db_owned(&self) -> Arc<DB> {
+        Arc::clone(&self.db)
+    }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/chain/store/index.rs` around lines 82 - 84, The public accessor db(&self)
-> &Arc<DB> leaks Arc ownership semantics; change db(&self) to return &DB (i.e.,
&*self.db) so callers remain uncoupled from Arc, and add a new explicit helper
like db_arc(&self) -> Arc<DB> or clone_db(&self) -> Arc<DB> that returns a
cloned Arc for callers that actually need owned/shared access; update only the
call sites that require an Arc to use the new helper and leave all other uses
calling db() unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/chain/store/index.rs`:
- Around line 82-84: The public accessor db(&self) -> &Arc<DB> leaks Arc
ownership semantics; change db(&self) to return &DB (i.e., &*self.db) so callers
remain uncoupled from Arc, and add a new explicit helper like db_arc(&self) ->
Arc<DB> or clone_db(&self) -> Arc<DB> that returns a cloned Arc for callers that
actually need owned/shared access; update only the call sites that require an
Arc to use the new helper and leave all other uses calling db() unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: f43b4985-2c9d-4c75-9605-3975facf576b

📥 Commits

Reviewing files that changed from the base of the PR and between 6fab16d and 2f0dbd8.

📒 Files selected for processing (16)
  • src/chain/store/chain_store.rs
  • src/chain/store/index.rs
  • src/db/car/any.rs
  • src/db/car/forest.rs
  • src/db/car/many.rs
  • src/db/car/mod.rs
  • src/interpreter/fvm2.rs
  • src/interpreter/fvm3.rs
  • src/interpreter/fvm4.rs
  • src/interpreter/vm.rs
  • src/rpc/mod.rs
  • src/state_manager/chain_rand.rs
  • src/state_manager/mod.rs
  • src/tool/subcommands/archive_cmd.rs
  • src/tool/subcommands/benchmark_cmd.rs
  • src/tool/subcommands/snapshot_cmd.rs

@hanabi1224 hanabi1224 marked this pull request as draft April 10, 2026 13:29
@hanabi1224 hanabi1224 marked this pull request as ready for review April 10, 2026 14:23
@hanabi1224 hanabi1224 requested a review from LesnyRumcajs April 10, 2026 14:23
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 10, 2026

Codecov Report

❌ Patch coverage is 61.90476% with 80 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.10%. Comparing base (b7d0075) to head (ac71a90).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/state_manager/mod.rs 72.54% 14 Missing ⚠️
src/rpc/methods/eth.rs 14.28% 12 Missing ⚠️
src/chain_sync/chain_follower.rs 0.00% 10 Missing ⚠️
src/dev/subcommands/state_cmd.rs 0.00% 6 Missing ⚠️
src/chain_sync/bad_block_cache.rs 0.00% 5 Missing ⚠️
src/daemon/mod.rs 0.00% 5 Missing ⚠️
src/rpc/methods/chain.rs 64.28% 5 Missing ⚠️
src/tool/subcommands/snapshot_cmd.rs 0.00% 5 Missing ⚠️
src/chain/store/chain_store.rs 82.35% 2 Missing and 1 partial ⚠️
src/chain_sync/network_context.rs 0.00% 3 Missing ⚠️
... and 6 more
Additional details and impacted files
Files with missing lines Coverage Δ
src/blocks/tipset.rs 84.15% <100.00%> (+0.18%) ⬆️
src/chain/mod.rs 75.00% <100.00%> (ø)
src/chain/store/index.rs 86.41% <100.00%> (+0.61%) ⬆️
src/chain_sync/tipset_syncer.rs 63.08% <100.00%> (ø)
src/db/car/any.rs 67.64% <100.00%> (ø)
src/db/car/forest.rs 83.18% <100.00%> (ø)
src/db/car/many.rs 67.40% <100.00%> (ø)
src/db/car/mod.rs 85.71% <100.00%> (+1.19%) ⬆️
src/fil_cns/validation.rs 78.75% <100.00%> (ø)
src/interpreter/fvm2.rs 44.68% <100.00%> (ø)
... and 26 more

... and 5 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b7d0075...ac71a90. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (7)
src/rpc/methods/state.rs (1)

2727-2727: Move ts into cur_ts here.

ts is not used after the address checks, so this can take ownership directly and skip one extra shared clone in the walk.

♻️ Proposed change
-        let mut cur_ts = ts.shallow_clone();
+        let mut cur_ts = ts;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/rpc/methods/state.rs` at line 2727, The code currently does let mut
cur_ts = ts.shallow_clone(), which unnecessarily clones ts; since ts is not used
after the address checks, change this to move ownership of ts into cur_ts (i.e.,
assign cur_ts from ts directly) right after the address checks so the subsequent
walk uses the owned value and avoids the extra shallow_clone; update any
references relying on cur_ts accordingly (look for ts, cur_ts, shallow_clone,
and the walk call).
src/rpc/methods/f3.rs (1)

535-541: Consume the fetched header vector instead of cloning its first tipset.

This branch already owns the Vec<Tipset>, so into_iter().next() avoids one extra clone before the vector is dropped.

♻️ Proposed change
-            None => ctx
-                .sync_network_context
-                .chain_exchange_headers(None, &tsk, nonzero!(1_u64))
-                .await?
-                .first()
-                .map(ShallowClone::shallow_clone)
-                .with_context(|| format!("failed to get tipset via chain exchange. tsk: {tsk}"))?,
+            None => ctx
+                .sync_network_context
+                .chain_exchange_headers(None, &tsk, nonzero!(1_u64))
+                .await?
+                .into_iter()
+                .next()
+                .with_context(|| format!("failed to get tipset via chain exchange. tsk: {tsk}"))?,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/rpc/methods/f3.rs` around lines 535 - 541, The code is unnecessarily
cloning the first Tipset from the owned Vec returned by
ctx.sync_network_context.chain_exchange_headers; change the None branch to
consume the Vec by using into_iter().next() (or
into_iter().next().ok_or_else(...)) instead of
.first().map(ShallowClone::shallow_clone) so you take ownership of the first
element directly; update the error/context handling to match the existing
with_context(...) usage and keep references to tsk and the original
chain_exchange_headers call the same.
src/utils/shallow_clone.rs (1)

6-8: Document what “shallow” guarantees here.

This trait now carries core ownership semantics for the refactor. A short contract about preserving shared backing state would make future impls much harder to misuse.

📝 Suggested doc comment
+/// Cheaply duplicates a handle while preserving shared backing state.
+///
+/// Implementations should not deep-copy caches or other shared resources.
 pub trait ShallowClone {
+    /// Returns another handle to the same underlying state.
     fn shallow_clone(&self) -> Self;
 }

As per coding guidelines, "Document public functions and structs with doc comments".

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/utils/shallow_clone.rs` around lines 6 - 8, Add a doc comment to the
public trait ShallowClone explaining the guarantee of "shallow": state that
ShallowClone::shallow_clone must produce a new value that shares the same
backing storage as the source (i.e., copies references/pointers only, not
deep-copying heap data), is a cheap/constant-time operation, and that mutations
to shared backing (if mutation is possible) will be visible through both values;
also document any thread-safety or ownership expectations implementers must
uphold (for example whether clones must be Send/Sync-safe or must preserve
internal reference counts). Reference the trait name ShallowClone and the method
shallow_clone in the comment so implementers know this contract applies to that
method.
src/rpc/methods/chain.rs (2)

1245-1252: Drop the extra shallow_clone() on already-owned tipsets.

Both sites already own the Tipset/Option<Tipset> they want to return, so cloning again just adds work without buying any ownership separation.

♻️ Possible cleanup
         let finalized = if depth >= 0
             && let Ok(ts) = ctx.chain_index().tipset_by_height(
                 (head.epoch() - depth).max(0),
                 head,
                 ResolveNullTipset::TakeOlder,
             ) {
-            Some(ts.shallow_clone())
+            Some(ts)
         } else {
             None
         };
         Ok(ctx
             .chain_store()
             .heaviest_tipset()
             .chain(ctx.store())
             .find(|ts| ts.parent_state() == &parent_state)
-            .shallow_clone())
+        )

Also applies to: 1381-1386

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/rpc/methods/chain.rs` around lines 1245 - 1252, The code calls
shallow_clone() on Tipset values that are already owned, causing unnecessary
cloning; update the branches that construct finalized (the
Some(ts.shallow_clone()) case) and the analogous branch around the other
occurrence (lines indicated in the review) to return/insert the owned ts
directly (e.g., use Some(ts) or move ts) instead of calling ts.shallow_clone(),
leaving tipset_by_height and ResolveNullTipset usage unchanged.

1602-1616: Use the new ShallowClone bound here or remove it.

PathChange<T> still clones through Clone, and arbitrary() does the same for both inner and the chosen enum value. The added T: ShallowClone bound currently just narrows the generic impl surface.

Also applies to: 1697-1705

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/rpc/methods/chain.rs` around lines 1602 - 1616, The generic bound on the
manual impl currently uses T: Clone; change it to use the new ShallowClone bound
instead (e.g., impl<T: ShallowClone> Clone for PathChange<T>) so the enum’s
clone implementation is allowed only when the inner T implements ShallowClone;
make the identical swap for the other duplicated impl at the other location (the
block referenced around lines 1697–1705) to keep bounds consistent.
src/chain/store/index.rs (1)

83-84: Prefer an ownership-neutral db() accessor.

Returning &Arc<DB> leaks the storage strategy into callers. Returning &DB here keeps the API smaller and leaves room for a separate db_arc() only where cloning the handle is actually needed.

♻️ Possible cleanup
-    pub fn db(&self) -> &Arc<DB> {
-        &self.db
+    pub fn db(&self) -> &DB {
+        self.db.as_ref()
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/chain/store/index.rs` around lines 83 - 84, Change the accessor signature
from pub fn db(&self) -> &Arc<DB> to an ownership-neutral pub fn db(&self) ->
&DB and adjust the body to return a reference to the inner DB (e.g. by
dereferencing the Arc stored in self.db). Also add a separate pub fn
db_arc(&self) -> Arc<DB> that clones and returns the Arc when a caller actually
needs ownership; update any callers that relied on the old signature to use
db_arc() when they need an Arc and db() when they only need a reference.
src/state_manager/mod.rs (1)

1248-1273: Minor style inconsistency between shallow_clone() and Arc::clone().

Line 1254 uses self.shallow_clone() while line 1273 uses Arc::clone(self) for the same pattern. While functionally equivalent, consider using shallow_clone() consistently with the rest of this refactor.

♻️ Suggested fix for consistency
-        let sm_cloned = Arc::clone(self);
+        let sm_cloned = self.shallow_clone();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/state_manager/mod.rs` around lines 1248 - 1273, There’s a style
inconsistency: earlier you use self.shallow_clone() to clone the state manager
but later you call Arc::clone(self); replace the Arc::clone(self) at the end
with the same shallow_clone() call to be consistent (i.e., construct sm_cloned
via self.shallow_clone()), and ensure the variable name (sm_cloned) doesn’t
shadow the earlier one or change its type expectations where used
(search_back_for_message, block_revert, task closures).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@src/chain/store/index.rs`:
- Around line 83-84: Change the accessor signature from pub fn db(&self) ->
&Arc<DB> to an ownership-neutral pub fn db(&self) -> &DB and adjust the body to
return a reference to the inner DB (e.g. by dereferencing the Arc stored in
self.db). Also add a separate pub fn db_arc(&self) -> Arc<DB> that clones and
returns the Arc when a caller actually needs ownership; update any callers that
relied on the old signature to use db_arc() when they need an Arc and db() when
they only need a reference.

In `@src/rpc/methods/chain.rs`:
- Around line 1245-1252: The code calls shallow_clone() on Tipset values that
are already owned, causing unnecessary cloning; update the branches that
construct finalized (the Some(ts.shallow_clone()) case) and the analogous branch
around the other occurrence (lines indicated in the review) to return/insert the
owned ts directly (e.g., use Some(ts) or move ts) instead of calling
ts.shallow_clone(), leaving tipset_by_height and ResolveNullTipset usage
unchanged.
- Around line 1602-1616: The generic bound on the manual impl currently uses T:
Clone; change it to use the new ShallowClone bound instead (e.g., impl<T:
ShallowClone> Clone for PathChange<T>) so the enum’s clone implementation is
allowed only when the inner T implements ShallowClone; make the identical swap
for the other duplicated impl at the other location (the block referenced around
lines 1697–1705) to keep bounds consistent.

In `@src/rpc/methods/f3.rs`:
- Around line 535-541: The code is unnecessarily cloning the first Tipset from
the owned Vec returned by ctx.sync_network_context.chain_exchange_headers;
change the None branch to consume the Vec by using into_iter().next() (or
into_iter().next().ok_or_else(...)) instead of
.first().map(ShallowClone::shallow_clone) so you take ownership of the first
element directly; update the error/context handling to match the existing
with_context(...) usage and keep references to tsk and the original
chain_exchange_headers call the same.

In `@src/rpc/methods/state.rs`:
- Line 2727: The code currently does let mut cur_ts = ts.shallow_clone(), which
unnecessarily clones ts; since ts is not used after the address checks, change
this to move ownership of ts into cur_ts (i.e., assign cur_ts from ts directly)
right after the address checks so the subsequent walk uses the owned value and
avoids the extra shallow_clone; update any references relying on cur_ts
accordingly (look for ts, cur_ts, shallow_clone, and the walk call).

In `@src/state_manager/mod.rs`:
- Around line 1248-1273: There’s a style inconsistency: earlier you use
self.shallow_clone() to clone the state manager but later you call
Arc::clone(self); replace the Arc::clone(self) at the end with the same
shallow_clone() call to be consistent (i.e., construct sm_cloned via
self.shallow_clone()), and ensure the variable name (sm_cloned) doesn’t shadow
the earlier one or change its type expectations where used
(search_back_for_message, block_revert, task closures).

In `@src/utils/shallow_clone.rs`:
- Around line 6-8: Add a doc comment to the public trait ShallowClone explaining
the guarantee of "shallow": state that ShallowClone::shallow_clone must produce
a new value that shares the same backing storage as the source (i.e., copies
references/pointers only, not deep-copying heap data), is a cheap/constant-time
operation, and that mutations to shared backing (if mutation is possible) will
be visible through both values; also document any thread-safety or ownership
expectations implementers must uphold (for example whether clones must be
Send/Sync-safe or must preserve internal reference counts). Reference the trait
name ShallowClone and the method shallow_clone in the comment so implementers
know this contract applies to that method.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 9ddcc73d-5a51-44b3-ae6b-48a8a8f15e63

📥 Commits

Reviewing files that changed from the base of the PR and between 2f0dbd8 and 4265bef.

📒 Files selected for processing (36)
  • src/blocks/tipset.rs
  • src/chain/mod.rs
  • src/chain/store/chain_store.rs
  • src/chain/store/index.rs
  • src/chain_sync/bad_block_cache.rs
  • src/chain_sync/chain_follower.rs
  • src/chain_sync/network_context.rs
  • src/chain_sync/tipset_syncer.rs
  • src/cli/subcommands/chain_cmd/list.rs
  • src/daemon/db_util.rs
  • src/daemon/mod.rs
  • src/db/car/any.rs
  • src/db/car/forest.rs
  • src/db/car/many.rs
  • src/db/car/mod.rs
  • src/dev/subcommands/state_cmd.rs
  • src/fil_cns/validation.rs
  • src/interpreter/fvm2.rs
  • src/interpreter/fvm3.rs
  • src/interpreter/fvm4.rs
  • src/interpreter/vm.rs
  • src/message_pool/msgpool/mod.rs
  • src/rpc/methods/chain.rs
  • src/rpc/methods/eth.rs
  • src/rpc/methods/f3.rs
  • src/rpc/methods/gas.rs
  • src/rpc/methods/state.rs
  • src/rpc/mod.rs
  • src/state_manager/chain_rand.rs
  • src/state_manager/mod.rs
  • src/tool/subcommands/archive_cmd.rs
  • src/tool/subcommands/benchmark_cmd.rs
  • src/tool/subcommands/snapshot_cmd.rs
  • src/utils/cache/lru.rs
  • src/utils/mod.rs
  • src/utils/shallow_clone.rs
✅ Files skipped from review due to trivial changes (3)
  • src/tool/subcommands/benchmark_cmd.rs
  • src/chain_sync/tipset_syncer.rs
  • src/tool/subcommands/archive_cmd.rs
🚧 Files skipped from review as they are similar to previous changes (9)
  • src/db/car/any.rs
  • src/db/car/many.rs
  • src/db/car/mod.rs
  • src/interpreter/fvm3.rs
  • src/interpreter/fvm4.rs
  • src/db/car/forest.rs
  • src/interpreter/fvm2.rs
  • src/tool/subcommands/snapshot_cmd.rs
  • src/chain/store/chain_store.rs

@hanabi1224 hanabi1224 enabled auto-merge April 13, 2026 12:00
@hanabi1224 hanabi1224 added this pull request to the merge queue Apr 13, 2026
Merged via the queue into main with commit be0d0db Apr 13, 2026
46 checks passed
@hanabi1224 hanabi1224 deleted the hm/no-arc-1 branch April 13, 2026 12:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

RPC requires calibnet RPC checks to run on CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants