Unverified Commit 845064bc authored by dmitrygx's avatar dmitrygx Committed by GitHub
Browse files

fix(prefill): IPv6-ready bootstrap host resolution for sglang (#3019)


Signed-off-by: default avatarDmitrii Gabor <dmitryg1709@gmail.com>
Co-authored-by: default avatarishandhanani <82981111+ishandhanani@users.noreply.github.com>
parent f10f5942
...@@ -110,12 +110,40 @@ class BaseWorkerHandler(ABC): ...@@ -110,12 +110,40 @@ class BaseWorkerHandler(ABC):
bootstrap_port = inner_tm.server_args.disaggregation_bootstrap_port bootstrap_port = inner_tm.server_args.disaggregation_bootstrap_port
if inner_tm.server_args.dist_init_addr: if inner_tm.server_args.dist_init_addr:
bootstrap_host = socket.gethostbyname( # IPv6-ready host extraction and resolution:
inner_tm.server_args.dist_init_addr.split(":")[0] # 1) Extract raw host from "host:port" or "[IPv6]:port"/"[IPv6]".
) # 2) Resolve via AF_UNSPEC to accept A/AAAA and literals.
# 3) Bracket-wrap IPv6 for safe "{host}:{port}" URL formatting.
addr = inner_tm.server_args.dist_init_addr.strip()
if addr.startswith("["):
end = addr.find("]")
host_core = addr[1:end] if end != -1 else addr.strip("[]")
else:
# Only treat single ':' with numeric suffix as host:port; otherwise it's an IPv6/FQDN host.
if addr.count(":") == 1:
host_candidate, maybe_port = addr.rsplit(":", 1)
host_core = host_candidate if maybe_port.isdigit() else addr
else:
host_core = addr
try:
infos = socket.getaddrinfo(
host_core,
None,
family=socket.AF_UNSPEC,
type=socket.SOCK_STREAM,
)
resolved = infos[0][4][0] # let OS policy pick v4/v6
bootstrap_host = resolved
except socket.gaierror:
# Fallback: keep literal/FQDN as-is (still wrap IPv6 below)
bootstrap_host = host_core
else: else:
bootstrap_host = get_local_ip_auto() bootstrap_host = get_local_ip_auto()
# Wrap IPv6 literal with brackets so f"{host}:{port}" stays valid.
if ":" in bootstrap_host and not bootstrap_host.startswith("["):
bootstrap_host = f"[{bootstrap_host}]"
return bootstrap_host, bootstrap_port return bootstrap_host, bootstrap_port
def _propagate_trace_context_to_sglang( def _propagate_trace_context_to_sglang(
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment