Leios: late-join AcquiredEbTxs subscriber
Add runAcquiredEbTxsSubscriber, the single writer of pendingTriggers. It
subscribes to the LeiosDb EB-notification channel and drains it forever. For
each AcquiredEbTxs notification (an EB whose closure has just become local) it
calls unblockCertRbsForClosure; an AcquiredEb is the body alone, the closure is
not yet complete, so it is ignored. Reading the notification and updating the
bookkeeping happen in one STM transaction, so no reader sees a CertRB that is
neither held back nor queued.
unblockCertRbsForClosure removes from announcementsMap every CertRB waiting on
the arrived EB and enqueues one reselection per removed CertRB onto
pendingTriggers. getBlockedCertRBs already stops holding these CertRBs back, so
the removal only keeps the map bounded; the enqueue drives the reselection.
Because removal and enqueue commit together, a re-arriving notification for the
same EB finds the entries gone and enqueues nothing, so each CertRB is enqueued
exactly once. A removed CertRB whose cache entry gcPruner already dropped is
skipped: the VolatileDB no longer holds that block, so reconsidering it is a
no-op.
This changes no behaviour: nothing forks the subscriber yet, so it does not run.
The ouroboros-consensus library builds under -Werror.