diff --git a/python/sglang/srt/disaggregation/encode_server.py b/python/sglang/srt/disaggregation/encode_server.py index 6ea60c397..89c181c12 100644 --- a/python/sglang/srt/disaggregation/encode_server.py +++ b/python/sglang/srt/disaggregation/encode_server.py @@ -11,6 +11,7 @@ import pickle import threading import time import traceback +import uuid from collections import defaultdict from http import HTTPStatus from typing import Dict, List, Optional, Set, Tuple, Union @@ -2550,7 +2551,8 @@ async def _dp_worker_health_encode(enc: MMEncoder) -> None: # No processor → can't functionally probe; liveness alone is healthy. return None - req_id = f"{HEALTH_CHECK_RID_PREFIX}_{time.time()}" + # uuid keeps rids unique across workers; a bare time.time() can collide. + req_id = f"{HEALTH_CHECK_RID_PREFIX}_{uuid.uuid4().hex}" try: _, _, _, error_msg, error_code = await enc.encode( mm_items=mm_items, @@ -3757,7 +3759,8 @@ async def health_generate(): return Response(status_code=200) try: - req_id = f"{HEALTH_CHECK_RID_PREFIX}_{time.time()}" + # uuid keeps rids unique across workers; a bare time.time() can collide. + req_id = f"{HEALTH_CHECK_RID_PREFIX}_{uuid.uuid4().hex}" dummy_request = { "mm_items": mm_items, diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index 86efbd085..1108ea4ff 100644 --- a/python/sglang/srt/entrypoints/http_server.py +++ b/python/sglang/srt/entrypoints/http_server.py @@ -24,6 +24,7 @@ import os import tempfile import threading import time +import uuid from contextlib import asynccontextmanager from http import HTTPStatus from typing import ( @@ -607,7 +608,9 @@ async def health_generate(request: Request) -> Response: return Response(status_code=200) sampling_params = {"max_new_tokens": 1, "temperature": 0.0} - rid = f"{HEALTH_CHECK_RID_PREFIX}_{time.time()}" + # uuid keeps rids unique across tokenizer workers (a bare time.time() can + # collide and crash the shared DetokenizerManager decode_status). + rid = f"{HEALTH_CHECK_RID_PREFIX}_{uuid.uuid4().hex}" if _global_state.tokenizer_manager.is_generation: gri = GenerateReqInput(