How long an entry must have been pending and never claimed to count, in milliseconds, strictly. Use one beat, so an entry the write that queued it already sent to a drain is not looked for. An entry whose claim's lease has lapsed counts whatever its age, since no drainer is holding it either.
This bounds which instances a beat drains, not which of their entries it dispatches: a fresh unbudgeted entry goes out beside an overdue one. HeartbeatCatchUpArgs.budgetedEffect is capped at one entry.
OptionalbudgetedThe one effect with a declared budget this beat may run, if any. The beat drains a single instance holding it and leaves the rest to later beats. That dispatch comes first: only the candidate query and that instance's claim sweep run before it, and ticks and unbudgeted recovery follow it. Size the hosting function for that handler's own declaration. Pass the name beatCatchUp chose, whose handler is the only budgeted one it registered.
Effect names to look for. An instance holding none of them in that state is not drained by this beat, whether it is in flight or completed.
The beat drains only these names, and runs HeartbeatCatchUpArgs.budgetedEffect at most once across the whole invocation. Register handlers for exactly these names.
Version-less definition names whose instances this beat recovers,
independent of the definitions it ticks.
Which entries make a beat drain an instance: the ones no drainer is working on, whether they were never claimed or their claim's lease lapsed.