Files
consensus/engine
zeekayandHanzo Dev c46c1b4c33 Keep asking for a block we abandoned re-polling
Abandonment ended two things with one `continue`. Not re-polling a block whose
voters cannot vote on it is correct and deliberate. Never asking for it again is
not: the cert catch-up fired once, at the instant of abandonment, and the flag
is set for the life of the process and cleared nowhere, so the block was never
looked at again. A single dropped fetch was permanent.

That froze lux-mainnet luxd-2 and luxd-3 on the C-Chain at 1,159,050 while
luxd-0/1/4 ran on to 1,160,600. Both held the blocks — their EVM had them
canonical — and consensus never accepted them, because by then the peers were
1,500 blocks ahead and no longer vote on a block that old. Cert catch-up was the
only door left and it had already shut. Restarting replays the same eight
strikes, which is why two restarts changed nothing.

The re-poll cap stays exactly as it was; only recovery becomes persistent.
claimCertCatchupLocked is height-keyed, cooled down and hard-bounded, so this is
a trickle. avalanchego has no abandon concept at all — it re-polls a processing
block until decided and quiesces only at NumProcessing()==0.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-13 18:57:42 -07:00
..
2025-12-19 08:49:11 -08:00