Skip to content

fix(sequencer): only warn about missing proposed checkpoint once overdue#23807

Merged
spalladino merged 1 commit into
merge-train/spartanfrom
spl/sequencer-warn-only-overdue-checkpoint
Jun 2, 2026
Merged

fix(sequencer): only warn about missing proposed checkpoint once overdue#23807
spalladino merged 1 commit into
merge-train/spartanfrom
spl/sequencer-warn-only-overdue-checkpoint

Conversation

@spalladino

Copy link
Copy Markdown
Contributor

Motivation

The orphan-block guard in checkSync (added in #23606) was logging at warn on every non-proposer validator, ~once per second for a full slot, every slot. Under pipelining a node receives and re-executes a block proposal for the next checkpoint up to one slot before the matching checkpoint proposal arrives, so the world-state tip legitimately sits in an as-yet-unproposed checkpoint for that whole window. That is the happy path, not the abnormal "proposer published blocks but never the checkpoint" case the guard is meant to flag. Observed on next-net: 118 warnings in ~59s on a healthy validator for a single slot.

Approach

The condition that distinguishes "checkpoint hasn't arrived yet" from "checkpoint will never arrive" is purely temporal — which is exactly what the archiver already computes in pruneOrphanProposedBlocks to decide when to prune an orphan block. The guard now reuses that same deadline: it still refuses to build (return undefined) whenever the orphan-shaped state holds, but only escalates to warn once the enclosing checkpoint is overdue by that deadline; within the normal pipelining window it logs at debug. The warn therefore fires at the same instant the archiver would prune the orphan.

Changes

  • sequencer-client: Add isProposedCheckpointOverdue, mirroring the archiver's orphan-prune deadline (start of slot after the block's build slot + grace, grace derived from blockDurationMs as the node wiring does). Gate the existing guard's log level on it — warn when overdue, debug otherwise. Control flow is unchanged.
  • sequencer-client (tests): Thread a real blockSlot through the orphan-guard test setup and split the warning test into an overdue case (expects warn) and a within-window case (expects no warn).

Under pipelining a block proposal leads its enclosing checkpoint proposal
by up to one slot, so the orphan-block guard in checkSync fires on every
non-proposer each slot. Gate the warn on the same overdue deadline the
archiver uses to prune orphan blocks; log at debug within the normal window.
@spalladino spalladino merged commit 5d46ed1 into merge-train/spartan Jun 2, 2026
14 checks passed
@spalladino spalladino deleted the spl/sequencer-warn-only-overdue-checkpoint branch June 2, 2026 20:40
danielntmd pushed a commit to danielntmd/aztec-packages that referenced this pull request Jun 4, 2026
BEGIN_COMMIT_OVERRIDE
chore: deploy next-net and reuse contracts (AztecProtocol#23761)
chore: turn on autoscaling (AztecProtocol#23706)
chore: rename staging-public to staging (AztecProtocol#23767)
chore(p2p): use sync hash for tx validation hashing (AztecProtocol#23768)
test(e2e): wait warmup slots in slashing tests (AztecProtocol#23719)
feat(api)!: make getTxReceipt the single tx-lookup API (AztecProtocol#23660)
fix: cap cloned n_tps fees within sponsored FPC balance (AztecProtocol#23770)
fix: protect HA validator Postgres from cluster scale-down (AztecProtocol#23772)
refactor: remove non-pipelining sequencer code path (AztecProtocol#23665)
feat(archiver): add getL2ToL1MembershipWitness node RPC (AztecProtocol#23646)
fix(p2p)!: revamp BLOCK_TXS validations (AztecProtocol#23778)
chore: name the bots (AztecProtocol#23795)
fix(e2e): ensure BBSync init (AztecProtocol#23793)
fix(p2p)!: fix BLOCK_TXS response under proposer equivocation (AztecProtocol#23786)
fix: reconnect L1 port-forward after epoch-boundary sleep in n_tps_prove
(AztecProtocol#23800)
chore: add empty vscode settings for yarn-project (AztecProtocol#23808)
fix(sequencer): only warn about missing proposed checkpoint once overdue
(AztecProtocol#23807)
fix: refresh n_tps fee quotes during sustained benchmark (AztecProtocol#23797)
fix(sequencer): enforce build-frame deadlines and align
attestation/publish windows (AztecProtocol#23776)
END_COMMIT_OVERRIDE
spalladino added a commit that referenced this pull request Jun 4, 2026
## Motivation

`v5-next` was cut from `next` at cbc99df (Jun 1), so PRs merged to
`merge-train/spartan` after the cut never flowed into it. This backports
all of them (authored by @spalladino and @fcarreiro) to keep v5-next
current with the spartan train.

## Approach

Each PR is cherry-picked from its squashed merge commit on
`merge-train/spartan`, in merge order, preserving the original commit
message and PR number — one commit per backported PR. All 11 applied
cleanly with no conflicts; patches are identical to the originals
(verified via `git patch-id`), and `bootstrap.sh build yarn-project`
passes on the result. Labeled `ci-no-squash` to preserve the per-PR
commits.

## Backported PRs

- #23768 — chore(p2p): use sync hash for tx validation hashing
- #23719 — test(e2e): wait warmup slots in slashing tests
- #23660 — feat(api)!: make getTxReceipt the single tx-lookup API
- #23665 — refactor: remove non-pipelining sequencer code path
- #23646 — feat(archiver): add getL2ToL1MembershipWitness node RPC
- #23778 — fix(p2p)!: revamp BLOCK_TXS validations
- #23786 — fix(p2p)!: fix BLOCK_TXS response under proposer equivocation
- #23808 — chore: add empty vscode settings for yarn-project
- #23807 — fix(sequencer): only warn about missing proposed checkpoint
once overdue
- #23776 — fix(sequencer): enforce build-frame deadlines and align
attestation/publish windows
- #23818 — chore(p2p): BlockTxsRequest comment

Note #23660, #23778, and #23786 are breaking changes (node RPC +
tx-effect db format, and p2p wire format respectively), as they were on
`next`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants