From 21e6c861470682a06be6919be32a6c7beac34fb6 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 14 Jul 2026 16:37:42 +0200 Subject: [PATCH] fix: let admin placement recover joined nodes --- packages/tracker/meshnet_tracker/server.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/tracker/meshnet_tracker/server.py b/packages/tracker/meshnet_tracker/server.py index 1ea2144..149ff3d 100644 --- a/packages/tracker/meshnet_tracker/server.py +++ b/packages/tracker/meshnet_tracker/server.py @@ -1534,15 +1534,15 @@ def _force_model_load_locked(server: "_TrackerHTTPServer", model_key: str) -> di if preset is None or not preset.get("hf_repo"): return None start, end = _preset_layer_bounds(preset) + # An explicit admin eviction is permitted to recover a stuck/loading node + # and to use the preset default precision. It must only avoid a node that + # already has another assignment in flight. candidates = [node for node in server.registry.values() - if node.status == "ready" and node.pending_new_assignment is None - and _has_usable_quantization(node)] + if node.pending_new_assignment is None] if not candidates: return None node = max(candidates, key=lambda item: item.benchmark_tokens_per_sec) - shard_end = min(end, start + min(_node_layer_capacity(node, preset), end - start + 1) - 1) - if shard_end < start: - return None + shard_end = min(end, start + max(1, min(_node_layer_capacity(node, preset), end - start + 1)) - 1) quantization = _node_quantization(node, preset) directive = _load_directive(node, str(preset["hf_repo"]), start, shard_end, quantization) replaced = node.hf_repo or node.model