Problem
receive_synced_block and receive_prepared_block events are delivered once per block by the observer/compute services. When the consensus state machine is in Producer, Coordinator, Subordinate, or Participant, DefaultProcessing logs a warning and drops these events.
If a block's synced/prepared events arrive while the validator is busy (e.g. in AggregateBatchCommitment or Coordinator waiting for signatures), and the block is later replayed via next_block, Initial::process_new_head enters WaitingFor::Synced but the events already fired. The node stalls until a newer block arrives.
Context
Pre-existing architecture issue. Mini-announces (#5321) widen the window by keeping the producer in non-Initial states longer (poll timer + batch commitment + Coordinator). Flagged by Codex review.
Impact
Low in practice with 12s ETH block intervals — the batch commitment + Coordinator flow typically completes in <1s. Higher risk with continuous_block_generation in tests (1s blocks).
Fix options
- Buffer synced/prepared events alongside
next_block in Producer and Coordinator, replay them after transitioning to Initial
- Or: have the observer/service re-emit synced/prepared for the replayed block (requires observer changes)
Related
PR #5321 (mini-announces), #5342
Problem
receive_synced_blockandreceive_prepared_blockevents are delivered once per block by the observer/compute services. When the consensus state machine is in Producer, Coordinator, Subordinate, or Participant,DefaultProcessinglogs a warning and drops these events.If a block's synced/prepared events arrive while the validator is busy (e.g. in
AggregateBatchCommitmentorCoordinatorwaiting for signatures), and the block is later replayed vianext_block,Initial::process_new_headentersWaitingFor::Syncedbut the events already fired. The node stalls until a newer block arrives.Context
Pre-existing architecture issue. Mini-announces (#5321) widen the window by keeping the producer in non-Initial states longer (poll timer + batch commitment + Coordinator). Flagged by Codex review.
Impact
Low in practice with 12s ETH block intervals — the batch commitment + Coordinator flow typically completes in <1s. Higher risk with
continuous_block_generationin tests (1s blocks).Fix options
next_blockin Producer and Coordinator, replay them after transitioning to InitialRelated
PR #5321 (mini-announces), #5342