Summary
With AsyncCoordinationBackend and AsyncRunManagement added in PR #148, the async coordination surface is nearly complete. The remaining gap is the claiming and facade layer:
ShardClaiming (sync) lives in crates/gossip-coordination/src/facade.rs and provides claim_next_available backed by default_claim_next_available.
CoordinationFacade (sync) composes RunManagement + CoordinationBackend + ShardClaiming.
Without async equivalents, async backends must either duplicate the scan/acquire loop or fall back to the blocking sync wrapper — neither of which is acceptable for production I/O-bound backends.
Work required
AsyncShardClaiming trait — mirror of ShardClaiming with async fn claim_next_available(...).
async_default_claim_next_available helper — async free function mirroring default_claim_next_available, composing AsyncRunManagement::collect_claim_candidates_into + AsyncCoordinationBackend::acquire_and_restore_into.
AsyncCoordinationFacade (optional) — composes AsyncRunManagement + AsyncCoordinationBackend + AsyncShardClaiming with the default claiming implementation.
- Wire
AsyncEtcdCoordinator to implement AsyncShardClaiming using the new default.
References
Summary
With
AsyncCoordinationBackendandAsyncRunManagementadded in PR #148, the async coordination surface is nearly complete. The remaining gap is the claiming and facade layer:ShardClaiming(sync) lives incrates/gossip-coordination/src/facade.rsand providesclaim_next_availablebacked bydefault_claim_next_available.CoordinationFacade(sync) composesRunManagement+CoordinationBackend+ShardClaiming.Without async equivalents, async backends must either duplicate the scan/acquire loop or fall back to the blocking sync wrapper — neither of which is acceptable for production I/O-bound backends.
Work required
AsyncShardClaimingtrait — mirror ofShardClaimingwithasync fn claim_next_available(...).async_default_claim_next_availablehelper — async free function mirroringdefault_claim_next_available, composingAsyncRunManagement::collect_claim_candidates_into+AsyncCoordinationBackend::acquire_and_restore_into.AsyncCoordinationFacade(optional) — composesAsyncRunManagement+AsyncCoordinationBackend+AsyncShardClaimingwith the default claiming implementation.AsyncEtcdCoordinatorto implementAsyncShardClaimingusing the new default.References
AsyncCoordinationBackend+AsyncRunManagement: Break up etcd backend into modular coordinate/run/shard files #148