Skip to main content

Module unblock

Module unblock 

Source
Expand description

Unblock scanner for budget/quota/capability-blocked executions.

Scans ff:idx:{p:N}:lane:<lane>:blocked:{budget,quota,route} per execution partition. For each blocked execution, re-evaluates the blocking condition. If cleared, calls FCALL ff_unblock_execution.

Cross-partition budget check is cached per scan cycle (MANDATORY — without it, 50K blocked executions = 50K budget reads).

Capability sweep reads the union of non-authoritative worker cap HASHes (ff:worker:{ns}:{instance_id}:caps — written by ff-sdk::FlowFabricWorker::connect and by the ff_register_worker FCALL) ONCE per scan cycle PER NAMESPACE, and uses it to decide whether a waiting_for_capable_worker execution has a matching worker. This is best-effort: caps HASHes may be slightly stale (TTL’d, refreshed on connect), but the promotion path is self-correcting — a promoted execution that still can’t be claimed gets re-blocked on the next scheduler tick. RFC-009 §7.5 documents the v1 sweep approach and defers connect-triggered sweeps to V2.

RFC-025 Phase 5 cutover: caps reads go through the namespace-scoped ff:idx:{ns}:workers + ff:worker:{ns}:{id}:caps helpers; the cache keys off Namespace so multi-tenant deployments don’t mix capability sets across tenants.

MUST skip paused_by_flow_cancel — only cancel_flow clears that.

Reference: RFC-008 §2.4, RFC-009 §7.5, RFC-010 §6

Structs§

UnblockScanner