Release v2.9.0#2295
Conversation
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
Pull request overview
Release v2.9.0 merge-back introducing the Valencia hardfork activation across configs and adding several safety/performance hardening changes in RPC execution, witness serving, and Bor state-sync handling.
Changes:
- Wire up ValenciaBlock (Amoy
40,776,000, Mainnet89,531,000) across runtime presets, CLI chain presets, genesis files, forkid, and config banner/tests. - Add Valencia+ state-sync size budgeting and miner-side block-size reservation to prevent oversized/non-propagating sprint-start blocks.
- Harden RPC and WIT: replace RPC workerpool with a semaphore-based limiter (with tests), cap WIT request element counts, and add framing-aware response size checks / uncached witness reads; add singleflight for concurrent
GetRootHashcache misses.
Reviewed changes
Copilot reviewed 33 out of 34 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| rpc/execution_pool.go | Replace worker pool with semaphore-based concurrency limiter; metrics reporting updates |
| rpc/execution_pool_test.go | New tests for pool sizing, ChangeSize behavior, and shedding semantics |
| params/version.go | Bump version to v2.9.0 |
| params/protocol_params.go | Introduce Valencia state-sync byte budget constants |
| params/config.go | Add ValenciaBlock to Bor config, presets, and banner output |
| params/config_test.go | Tests for Valencia banner output and IsValencia gating |
| node/rpcstack.go | Wire HTTP/WS RPC server execution pool size from config |
| node/rpcstack_test.go | Test that RPC/WS pools are sized from config |
| node/node.go | Pass HTTP execution pool size into HTTP server config |
| miner/worker.go | Reserve block-size budget for Valencia state-sync system tx at sprint start |
| miner/worker_test.go | Tests for txFitsSize w/ reservation and stateSyncReserveFor gating |
| internal/cli/server/server_test.go | Make developer-mode mining test more robust to timing |
| internal/cli/server/chains/mainnet.go | Add ValenciaBlock to mainnet CLI chain preset |
| internal/cli/server/chains/amoy.go | Add ValenciaBlock to amoy CLI chain preset |
| go.mod | Drop workerpool dependency; add singleflight dependency |
| go.sum | Remove workerpool/deque sums and update deps |
| eth/protocols/wit/request_rlp.go | Add bounded DecodeRLP implementations to cap list element counts |
| eth/protocols/wit/protocol.go | Define MaxWitnessServe / MaxWitnessMetadataServe constants |
| eth/protocols/wit/peer.go | Enforce request limits client-side for witness requests |
| eth/protocols/wit/peer_test.go | Tests for over-limit witness request rejection |
| eth/protocols/wit/handlers.go | Enforce request limits server-side in WIT handlers |
| eth/protocols/wit/handlers_test.go | Tests for DecodeRLP bounds enforcement |
| eth/handler_wit.go | Bound witness serving by request counts, memory, and encoded response size; avoid cache pollution |
| eth/handler_wit_test.go | Tests for page cap, memory budget, and response-size bound |
| core/types/bor_extra_test.go | Tests for raw TxDependency decode optimization + Valencia gate behavior |
| core/types/block.go | Avoid TxDependency expansion for header verification; add combined accessor; Valencia gate for txdep validation |
| core/forkid/forkid.go | Include ValenciaBlock in forkid fork gathering |
| core/blockchain_reader.go | Add GetWitnessUncached to serve peers without cache insertion |
| consensus/bor/bor.go | Use combined extra accessor; add Valencia state-sync per-block budget enforcement |
| consensus/bor/bor_test.go | Tests for state-sync budgeting behavior and guarantees |
| consensus/bor/api.go | Collapse concurrent GetRootHash cache misses via singleflight |
| consensus/bor/api_roothash_concurrency_test.go | Concurrency regression test for singleflight behavior |
| builder/files/genesis-mainnet-v1.json | Add valenciaBlock to mainnet genesis |
| builder/files/genesis-amoy.json | Add valenciaBlock to amoy genesis |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|



Public release v2.9.0 - Valencia hardfork.
Post-rollout merge-back of the private security release (
v2.9.0-priv). Activation: Amoy 40,776,000 / Mainnet 89,531,000.