Repository navigation
Fix block-carried payload votes discarded on late envelopes - #10101
NikhilSharmaWe wants to merge 6 commits into
Conversation
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
| /// Optional hook notified when a payload envelope has been imported. | ||
| /// | ||
| /// Set once by the client alongside `block_attestation_awaiting_payload`. | ||
| pub payload_envelope_imported: OnceLock<PayloadEnvelopeImportedFn>, |
There was a problem hiding this comment.
we don't do such hooks in lighthouse
There was a problem hiding this comment.
Dropping the hooks, parking these on a BeaconChain pending map instead and applying them when the envelope imports.
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
|
🤖 automated (dapplion's agent): Suggestion: park the votes inside |
|
agreed on the coverage hole with I'm going to move park/drain into Will remove the BeaconChain pending map |
|
@michaelsproul would like to know your thoughts on this, too. |
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
Description
Block import discarded Gloas index-1 (
payload_present) attestations when fork choice returnedPayloadNotReceivedbecause the envelope had not arrived yet. Those votes were swallowed asInvalidAttestationand never retried; envelope import only flippedpayload_received.Park block-carried votes inside fork choice when
AttestationFromBlock::TruehitsPayloadNotReceived, then apply (or slot-queue) them fromon_payload_envelope_received. That is the same path production and the harness use, so the drain cannot be skipped. Gossip still errors onPayloadNotReceivedand keeps using the existing reprocess queue /UnknownPayloadEnvelopepath.Prune parked entries when the attested block leaves the proto-array. Parked votes are not persisted across restart (same class as other short-lived FC queues today) and are not deduped.
Fixes #10088
Test plan
cargo check -p fork_choice -p beacon_chaincargo nextest run -p beacon_chain --features spec-minimal --release gloas_block_carried_payload_votes_applied_after_envelope