From a4c2aa2b872d6654f2acd4af236de03993ec2ecf Mon Sep 17 00:00:00 2001 From: Alex Cheema <41707476+AlexCheema@users.noreply.github.com> Date: Mon, 23 Feb 2026 02:09:01 -0800 Subject: [PATCH] fix: raise error when MlxJaccl requested without RDMA cycles (#1585) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - When MlxJaccl (RDMA) placement is requested but no RDMA-connected cycles exist, raise a clear ValueError instead of silently falling back to non-RDMA cycles - Split from #1519 for independent review ## Test plan - [x] basedpyright — 0 errors - [x] ruff check — passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 --- src/exo/master/placement.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/exo/master/placement.py b/src/exo/master/placement.py index a0604055..5f191b84 100644 --- a/src/exo/master/placement.py +++ b/src/exo/master/placement.py @@ -112,7 +112,11 @@ def place_instance( cycle for cycle in smallest_cycles if topology.is_rdma_cycle(cycle) ] - if command.instance_meta == InstanceMeta.MlxJaccl and smallest_rdma_cycles != []: + if command.instance_meta == InstanceMeta.MlxJaccl: + if not smallest_rdma_cycles: + raise ValueError( + "Requested RDMA (MlxJaccl) but no RDMA-connected cycles available" + ) smallest_cycles = smallest_rdma_cycles cycles_with_leaf_nodes: list[Cycle] = [