Skip to content

fix: Better detection for epoch prune#21478

Merged
PhilWindle merged 2 commits intomerge-train/spartanfrom
pw/fix-prune-typ-deection
Mar 16, 2026
Merged

fix: Better detection for epoch prune#21478
PhilWindle merged 2 commits intomerge-train/spartanfrom
pw/fix-prune-typ-deection

Conversation

@PhilWindle
Copy link
Collaborator

@PhilWindle PhilWindle commented Mar 13, 2026

The P2PClient used the test newCheckpointNumber !== oldCheckpointNumber to detect if a prune is a checkpoint prune or not. A better test is that the new checkpoint number should be less than the old one.

For example, in HA setups, one node will frequently experience a checkpoint prune where newCheckpointNumber === oldCheckpointNumber + 1. Replacing the losing HA node's view of the pending chain with that from L1.

Copy link
Contributor

@spalladino spalladino left a comment

Choose a reason for hiding this comment

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

Fix looks good. However, now that we're on it, do we want to request at least two checkpoints to be pruned to consider it an epoch prune? Otherwise, we can trigger this on an L1 reorg that removed a mined checkpoint.

@PhilWindle
Copy link
Collaborator Author

Fix looks good. However, now that we're on it, do we want to request at least two checkpoints to be pruned to consider it an epoch prune? Otherwise, we can trigger this on an L1 reorg that removed a mined checkpoint.

I did wonder. Happy to update it.

@PhilWindle PhilWindle merged commit a3f1ed1 into merge-train/spartan Mar 16, 2026
11 checks passed
@PhilWindle PhilWindle deleted the pw/fix-prune-typ-deection branch March 16, 2026 15:03
AztecBot pushed a commit that referenced this pull request Mar 16, 2026
The `P2PClient` used the test `newCheckpointNumber !==
oldCheckpointNumber` to detect if a prune is a checkpoint prune or not.
A better test is that the new checkpoint number should be less than the
old one.

For example, in HA setups, one node will frequently experience a
checkpoint prune where `newCheckpointNumber === oldCheckpointNumber +
1`. Replacing the losing HA node's view of the pending chain with that
from L1.
@AztecBot
Copy link
Collaborator

✅ Successfully backported to backport-to-v4-next-staging #21453.

github-merge-queue bot pushed a commit that referenced this pull request Mar 16, 2026
BEGIN_COMMIT_OVERRIDE
feat: add ETHEREUM_HTTP_TIMEOUT_MS env var for viem HTTP transport
(#20919)
fix(archiver): filter tagged log queries by block number (#21388)
fix(node): handle slot zero in getL2ToL1Messages (#21386)
feat(sequencer): redistribute checkpoint budget evenly across remaining
blocks (#21378)
fix: fall back to package.json for CLI version detection (#21382)
chore: Removed multiplier config (#21412)
chore: Removed default snapshot url config (#21413)
chore: Read tx filestores from network config (#21416)
fix(node): check world state against requested block hash (#21385)
feat(p2p): use l2 priority fee only for tx priority (#21420)
feat(p2p): reject and evict txs with insufficient max fee per gas
(#21281)
revert "feat(p2p): reject and evict txs with insufficient max fee per
gas (#21281)" (#21432)
chore: Reduce log spam (#21436)
fix(tx): reject txs with invalid setup when unprotecting (#21224)
fix: orchestrator enqueue yield (#21286)
chore(builder): check archive tree next leaf index during block building
(#21457)
fix: scenario deployment (#21428)
chore: add claude skill to read network-logs (#21495)
chore: update claude network-logs skill (#21523)
feat(rpc): add package version to RPC response headers (#21526)
chore(prover): silence "epoch to prove" debug logs (#21527)
chore(sequencer): do not log blob data (#21530)
fix: dependabot alerts (#21531)
docs(p2p): nicer READMEs (#21456)
fix(archiver): guard getL1ToL2Messages against incomplete message sync
(#21494)
fix(sequencer): await syncing proposed block to archiver (#21554)
feat(ethereum): check VK tree root and protocol contracts hash in rollup
compatibility (#21537)
fix: marking peer as dumb on failed responses (#21316)
fix(kv-store): make LMDB clear and drop operations atomic across
sub-databases (#21539)
feat(world-state): add blockHash verification to syncImmediate (#21556)
chore(monitor): print out l2 fees components (#21559)
chore: rm faucet (#21538)
chore: remove old merkle trees (#21577)
feat: Implement commit all and revert all for world state checkpoints
(#21532)
chore: skip flaky browser acir tests in CI (#21596)
fix: Better detection for epoch prune (#21478)
chore: logging (#21604)
fix: Don't update state if we failed to execute sufficient transactions
(#21443)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants