Release Miles sync port claims#22
Conversation
343a6c8 to
f5c8829
Compare
f5c8829 to
74f5152
Compare
|
Reviewed this as part of the F1-F12 code review — supportive. Two notes before merge:
|
The previous placement released the MASTER_ADDR_PORT claim only after run_sync_session returned successfully, so a raising transport or a wait_for timeout skipped it and leaked the claim until kill_pipeline. - Wrap the transport await in try/finally so the release also runs when run_sync_session raises. - Thread the claim out of the atomic unit via port_claim_holder so the timeout/cancellation handlers can release it too. - Add _release_port_claim_nowait for those handlers: an awaited release would itself be cancelled by wait_for, and CancelledError derives from BaseException so _release_port_claim's except Exception cannot catch it. A bare .remote() still dispatches the delete. Addresses the review note on rlops#22. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Reopened with the hardening for your note 1 (612bdf7). What changed
I drove all three exit paths against a stubbed SharedStorage — success, transport raising, and On note 2 (the claim serves a dead path) I'd rather keep the broadcast path. It's the normal, faster GPU transport and we do want it — we just don't have the setup to test the sender-side NCCL right now, so it stays behind the That makes this PR and #24 mutually exclusive:
I'm deliberately leaving #24 open rather than closing it, so the team can make the call. My vote is to keep broadcast and merge this one — the capability is necessary enough that I'd rather not delete and re-add it, even though we can't exercise it today. |
Context
MilesModelUpdateService claims NCCL rendezvous ports in SharedStorage while building sync plans. The MILES path recorded the claim but never released it after the cache-owner transport completed, so successful syncs could leave stale
MASTER_ADDR_PORT:*keys behind over a long-running job.