relay working with qwen2.5;
relay anounced on node ready
This commit is contained in:
@@ -141,6 +141,18 @@ def _is_cache_miss_body(body: bytes) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def _response_error_snippet(body: bytes, limit: int = 500) -> str:
|
||||
"""Return a compact error string from a downstream JSON/text response body."""
|
||||
try:
|
||||
payload = json.loads(body)
|
||||
if isinstance(payload, dict):
|
||||
message = payload.get("error") or payload.get("detail") or payload
|
||||
return str(message)[:limit]
|
||||
except (json.JSONDecodeError, TypeError, UnicodeDecodeError):
|
||||
pass
|
||||
return body.decode("utf-8", errors="replace")[:limit]
|
||||
|
||||
|
||||
class _TorchHTTPServer(http.server.HTTPServer):
|
||||
def __init__(
|
||||
self,
|
||||
@@ -425,6 +437,12 @@ class _TorchHandler(http.server.BaseHTTPRequestHandler):
|
||||
self._send_json(409, {"error": "cache_miss", "detail": str(exc)})
|
||||
return
|
||||
except Exception as exc:
|
||||
print(
|
||||
f" [node] forward failed layers={getattr(server.backend, 'shard_start', '?')}-"
|
||||
f"{getattr(server.backend, 'shard_end', '?')} session={session[:8]}: {exc}"
|
||||
f"{self._request_log_suffix()}",
|
||||
flush=True,
|
||||
)
|
||||
self._send_json(500, {"error": str(exc)})
|
||||
return
|
||||
|
||||
@@ -900,11 +918,12 @@ class _TorchHandler(http.server.BaseHTTPRequestHandler):
|
||||
if status == 409 and _is_cache_miss_body(resp_body):
|
||||
raise _PipelineCacheMiss(node_url)
|
||||
if status >= 400:
|
||||
detail = _response_error_snippet(resp_body)
|
||||
print(
|
||||
f" [node] relay hop {hop_index} returned {status} from {relay_addr}",
|
||||
f" [node] relay hop {hop_index} returned {status} from {relay_addr}: {detail}",
|
||||
flush=True,
|
||||
)
|
||||
return f"pipeline error at {node_url} via relay: status {status}", None
|
||||
return f"pipeline error at {node_url} via relay: status {status}: {detail}", None
|
||||
except _PipelineCacheMiss:
|
||||
raise
|
||||
except Exception as exc:
|
||||
@@ -929,8 +948,9 @@ class _TorchHandler(http.server.BaseHTTPRequestHandler):
|
||||
body = exc.read()
|
||||
if exc.code == 409 and _is_cache_miss_body(body):
|
||||
raise _PipelineCacheMiss(node_url) from exc
|
||||
print(f" [node] pipeline hop {hop_index} failed at {node_url}: {exc}", flush=True)
|
||||
return f"pipeline error at {node_url}: {exc}", None
|
||||
detail = _response_error_snippet(body)
|
||||
print(f" [node] pipeline hop {hop_index} failed at {node_url}: {exc}: {detail}", flush=True)
|
||||
return f"pipeline error at {node_url}: {exc}: {detail}", None
|
||||
except Exception as exc:
|
||||
print(f" [node] pipeline hop {hop_index} failed at {node_url}: {exc}", flush=True)
|
||||
return f"pipeline error at {node_url}: {exc}", None
|
||||
|
||||
Reference in New Issue
Block a user