From c9297661b9185344d758c5be47653b8abc84c0cc Mon Sep 17 00:00:00 2001 From: JooYeon <48883581+2JooYeon@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:20:43 +0900 Subject: [PATCH] fix: /metrics endpoint always reports engine_type="unified" in PD disaggregation mode (#18552) Co-authored-by: joo_yeon.lee --- python/sglang/srt/entrypoints/grpc_server.py | 4 ++-- python/sglang/srt/entrypoints/http_server.py | 2 +- python/sglang/srt/managers/scheduler_metrics_mixin.py | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/python/sglang/srt/entrypoints/grpc_server.py b/python/sglang/srt/entrypoints/grpc_server.py index 61b7157f3..e928b4de8 100644 --- a/python/sglang/srt/entrypoints/grpc_server.py +++ b/python/sglang/srt/entrypoints/grpc_server.py @@ -325,7 +325,7 @@ class SGLangSchedulerServicer(sglang_scheduler_pb2_grpc.SglangSchedulerServicer) token_ids_logprob=None, ) # Set disaggregation params if needed - if self.server_args.disaggregation_mode != DisaggregationMode.NULL: + if self.server_args.disaggregation_mode != DisaggregationMode.NULL.value: health_req.bootstrap_host = FAKE_BOOTSTRAP_HOST health_req.bootstrap_room = 0 else: @@ -1087,7 +1087,7 @@ def _execute_grpc_server_warmup(server_args: ServerArgs): } # Set disaggregation params if needed - if server_args.disaggregation_mode != DisaggregationMode.NULL: + if server_args.disaggregation_mode != DisaggregationMode.NULL.value: warmup_request_kwargs["disaggregated_params"] = ( sglang_scheduler_pb2.DisaggregatedParams( bootstrap_host=FAKE_BOOTSTRAP_HOST, diff --git a/python/sglang/srt/entrypoints/http_server.py b/python/sglang/srt/entrypoints/http_server.py index 0bcbd4a37..f279158d1 100644 --- a/python/sglang/srt/entrypoints/http_server.py +++ b/python/sglang/srt/entrypoints/http_server.py @@ -489,7 +489,7 @@ async def health_generate(request: Request) -> Response: ) if ( _global_state.tokenizer_manager.server_args.disaggregation_mode - != DisaggregationMode.NULL + != DisaggregationMode.NULL.value ): gri.bootstrap_host = FAKE_BOOTSTRAP_HOST gri.bootstrap_room = 0 diff --git a/python/sglang/srt/managers/scheduler_metrics_mixin.py b/python/sglang/srt/managers/scheduler_metrics_mixin.py index 78f1ba31c..ad1330efc 100644 --- a/python/sglang/srt/managers/scheduler_metrics_mixin.py +++ b/python/sglang/srt/managers/scheduler_metrics_mixin.py @@ -104,9 +104,11 @@ class SchedulerMetricsMixin: ) if self.enable_metrics: - if self.server_args.disaggregation_mode == DisaggregationMode.PREFILL: + if self.server_args.disaggregation_mode == DisaggregationMode.PREFILL.value: engine_type = "prefill" - elif self.server_args.disaggregation_mode == DisaggregationMode.DECODE: + elif ( + self.server_args.disaggregation_mode == DisaggregationMode.DECODE.value + ): engine_type = "decode" else: engine_type = "unified"