Skip to content

feat(trie): remove SerialSparseTrie#21808

Merged
mediocregopher merged 33 commits intomainfrom
dani/nuke-serial-sparse-trie
Feb 10, 2026
Merged

feat(trie): remove SerialSparseTrie#21808
mediocregopher merged 33 commits intomainfrom
dani/nuke-serial-sparse-trie

Conversation

@DaniPopes
Copy link
Member

@DaniPopes DaniPopes commented Feb 4, 2026

Summary

Remove SerialSparseTrie and make ParallelSparseTrie the only sparse trie implementation.

Background

ParallelSparseTrie has been the default and only used implementation in production since:

The --disable-parallel-sparse-trie flag was kept for fallback, but SerialSparseTrie has been effectively dead code.

Changes

  • Remove SerialSparseTrie from reth-trie-sparse
  • Move ParallelSparseTrie from reth-trie-sparse-parallel into reth-trie-sparse
  • Delete reth-trie-sparse-parallel crate
  • Update SparseStateTrie default type parameter to ParallelSparseTrie
  • Remove sparse trie benchmarks (were comparing serial vs parallel)
  • Update tests to use find_leaf() instead of nodes_ref() (internal API not exposed by ParallelSparseTrie)

Simplifications

  • One less crate to maintain
  • No more feature flag complexity for parallel trie selection
  • Clearer code path in engine tree

@DaniPopes DaniPopes force-pushed the dani/nuke-serial-sparse-trie branch from 89cc006 to 40203c0 Compare February 4, 2026 15:36
@codspeed-hq
Copy link

codspeed-hq bot commented Feb 4, 2026

CodSpeed Performance Report

Merging this PR will not alter performance

Comparing dani/nuke-serial-sparse-trie (230cdde) with main (3668575)

Summary

✅ 70 untouched benchmarks
⏩ 55 skipped benchmarks1

Footnotes

  1. 55 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

Copy link
Collaborator

@mattsse mattsse left a comment

Choose a reason for hiding this comment

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

rip bozo


/// Sparse trie task implementation that uses in-memory sparse trie data to schedule proof fetching.
pub(super) struct SparseTrieCacheTask<A = SerialSparseTrie, S = SerialSparseTrie> {
pub(super) struct SparseTrieCacheTask<A = ParallelSparseTrie, S = ParallelSparseTrie> {
Copy link
Collaborator

Choose a reason for hiding this comment

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

maybe we dont actually need these anymore, but can keep for now

@github-project-automation github-project-automation bot moved this from Backlog to In Progress in Reth Tracker Feb 4, 2026
@DaniPopes
Copy link
Member Author

DaniPopes commented Feb 5, 2026

will do rename and cleanup in a followup so that this one is actually reviewable

@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

✅ Changelog found on PR.

Edit changelog

@mediocregopher mediocregopher added this pull request to the merge queue Feb 10, 2026
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Feb 10, 2026
@mediocregopher mediocregopher added this pull request to the merge queue Feb 10, 2026
Merged via the queue into main with commit c727c61 Feb 10, 2026
41 checks passed
@mediocregopher mediocregopher deleted the dani/nuke-serial-sparse-trie branch February 10, 2026 13:58
@github-project-automation github-project-automation bot moved this from In Progress to Done in Reth Tracker Feb 10, 2026
CarlBeek added a commit to CarlBeek/reth that referenced this pull request Feb 10, 2026
* paradigmxyz/main: (144 commits)
  feat(engine): add getPayloadBodiesV2 endpoints for EIP-7928 BAL support (paradigmxyz#21774)
  ci: skip scheduled workflows on forks (paradigmxyz#22022)
  chore: rm random log file (paradigmxyz#22023)
  chore: remove base.reth.rs public endpoint references (paradigmxyz#22019)
  feat(rpc): add `subscribeFinalizedChainNotifications` endpoint (paradigmxyz#22011)
  feat(trie): remove `SerialSparseTrie` (paradigmxyz#21808)
  fix(rocksdb): set max_open_files to prevent fd exhaustion (paradigmxyz#22005)
  refactor(txpool): rename and document validation methods (paradigmxyz#22008)
  feat(engine): prefetch withdrawal addresses in pre-warming (paradigmxyz#21966)
  refactor(pool): add IntoIter: Send bounds to avoid unnecessary Vec collect (paradigmxyz#22001)
  fix(rpc): enforce blockHash constraint in append_matching_block_logs (paradigmxyz#22007)
  chore: move Kurtosis failures to the hive slack channel  (paradigmxyz#21983)
  feat(rpc): propagate TransactionOrigin through send_transaction and batcher (paradigmxyz#21969)
  feat(engine): reorg depth commitment metric (paradigmxyz#21992)
  feat(storage): add use_hashed_state storage setting (paradigmxyz#21997)
  perf: better scheduling for storage roots computation (paradigmxyz#21987)
  chore(deps): bump alloy 1.6.2 -> 1.6.3 (paradigmxyz#21986)
  fix(stages): skip sender unwind when fully pruned (paradigmxyz#21988)
  chore(net): remove OP stack bootnodes (paradigmxyz#21984)
  ci: use depot for hive and kurtosis image builds, run daily (paradigmxyz#21976)
  ...

# Conflicts:
#	.github/workflows/compact.yml
#	.github/workflows/dependencies.yml
#	.github/workflows/docker-tag-latest.yml
#	.github/workflows/docker.yml
#	.github/workflows/e2e.yml
#	.github/workflows/hive.yml
#	.github/workflows/integration.yml
#	.github/workflows/kurtosis.yml
#	.github/workflows/lint.yml
#	.github/workflows/release.yml
#	.github/workflows/reproducible-build.yml
#	.github/workflows/stale.yml
#	.github/workflows/sync-era.yml
#	.github/workflows/sync.yml
#	.github/workflows/unit.yml
#	bin/reth/Cargo.toml
#	crates/cli/commands/src/node.rs
#	crates/node/core/src/node_config.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants