Repository navigation
chore(orchestrator): send all engine admin POSTs through _admin_post - #3839
Closed
faresobeid wants to merge 1 commit into
Closed
faresobeid wants to merge 1 commit into
faresobeid wants to merge 1 commit into
Conversation
One AdminPlane.init_broadcaster for NCCL and NIXL, AdminPlane.load_lora_adapter through the shared retry helper (opt-in 404 retry), and fold PrefillScorer into InferenceClient.
faresobeid
marked this pull request as ready for review
October 4, 2026 12:28
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
orchestrator/clients.pyhad three ways to POST to an engine. Now every admin POST goes through_admin_post.What changed
AdminPlane.init_broadcaster(host, port, timeout, inference_world_size, session_id="default")replacesAdminPlane.initialize_nccland the free functioninit_nixl_broadcast. NCCL and NIXL receivers both call it.DynamoAdminPlaneoverridesinit_broadcasterinstead ofinitialize_nccland passessession_idthrough to its collective RPC (it was hard-coded to"default").AdminPlane.load_lora_adapter(lora_name, lora_path)replaces the free function. It uses_admin_post(..., retry_not_found=True)._is_retryable_lora_error, the tenacity decorator andLORA_LOAD_READ_TIMEOUT_S/LORA_LOAD_TOTAL_TIMEOUT_Sare gone. The 404 retry is kept on purpose: vLLM returns 404 (LoRAAdapterNotFoundError) while the adapter files are not yet visible over NFS._admin_post/_is_retryable_admin_errortakeretry_not_found: bool = False.PrefillScorer(a lazyAsyncOpenAIholder) is folded intoInferenceClient.score/aclose._is_retryable_lora_errortests become one parametrized_is_retryable_admin_errortest. The LoRA and NCCL-init tests now target the new methods.Behavior change
/init_broadcaster. It now raises. It also now retries 5xx and transport errors, with a per-attempt read timeout ofmax(300s, timeout)(it had no timeout before). NIXL init already worked this way.session_id: "default". The server already defaults to that value.init_broadcasternow goes through Dynamo's/collective_rpcoverride instead of a plain/init_broadcasterPOST to the Dynamo worker. This combination is not exercised anywhere.Checks run
pytest tests/unit/orchestrator tests/unit/test_configs* tests/unit/inference/test_dynamo.py tests/unit/transports -m "not gpu": 307 passedruff check .,ruff format --check .: cleanorigin/mainclients.py, using mocked clients:init_nixl_broadcastandinit_broadcastersend identical POSTs (path, timeout, JSON) for (world size, servers) = (8,2), (16,4), (1,1).session_id.GPU checks still needed
rank_offset> 0)InferenceClient.score)examples/extra/dynamo)Conflicts
clients.py)/init_broadcaster; this PR supersedes it)dynamo.py,test_dynamo.py)clients.py/test_clients.py)transports/weights)None of #3652, #3811, #3802, #3803, #3807, #3820, #3819, #3836 touch these files.
Note
Medium Risk
Changes NCCL broadcast init from fail-open on 404 to fail-closed with retries, affecting multi-server weight broadcast; LoRA and init_broadcaster retry semantics also shifted.
Overview
Routes all inference engine admin POSTs through shared
_admin_post, consolidating LoRA load, weight-broadcast setup, pause/resume, and related calls behind one retry path.AdminPlane.init_broadcasterreplacesinitialize_nccland the standaloneinit_nixl_broadcast; NCCL, NIXL, and Dynamo receivers call it, with optionalsession_id(Dynamo passes it into collective RPC instead of hard-coded"default").AdminPlane.load_lora_adapterreplaces the old module-level helper and uses_admin_post(..., retry_not_found=True)for NFS propagation 404s.PrefillScoreris folded intoInferenceClient.score.Behavior: NCCL
/init_broadcasterno longer silently skips 404—it fails like NIXL—and gains bounded retries/timeouts on 5xx and transport errors. LoRA loads also retry other 5xx (not only 500) with a 60s per-attempt read timeout. Weight transports call the newAdminPlanemethods directly.Reviewed by Cursor Bugbot for commit d1c4e46. Bugbot is set up for automated code reviews on this repo. Configure here.