sgl-project/sglang · error · RuntimeError

--enable-metrics requires smg-grpc-servicer ≥ 0.5.3 (the ver

Error message

--enable-metrics requires smg-grpc-servicer ≥ 0.5.3 (the version that accepts 'on_request_manager_ready'); installed version lacks the hook so the HTTP sidecar would never start. Upgrade smg-grpc-servicer or remove --enable-metrics.

What it means

serve_grpc refuses to start when --enable-metrics is passed but the installed smg-grpc-servicer is older than 0.5.3, which is the first version accepting the on_request_manager_ready hook. Without that hook the metrics HTTP sidecar can never launch, so the server fails fast instead of silently serving without a /metrics endpoint.

Source

Thrown at python/sglang/srt/entrypoints/grpc_server.py:248

                exc_info=True,
            )

    # Older smg-grpc-servicer releases (≤ 0.5.2) accept only (server_args,
    # model_info) and reject the on_request_manager_ready hook. The hook is
    # what calls _start_sidecar_server, so dropping the kwarg disables the
    # entire HTTP sidecar (Prometheus /metrics and /start_profile +
    # /stop_profile). Core gRPC serving still works without it.
    serve_kwargs: dict = {}
    sidecar_supported = (
        "on_request_manager_ready" in inspect.signature(_serve_grpc).parameters
    )
    if sidecar_supported:
        serve_kwargs["on_request_manager_ready"] = _on_request_manager_ready
    elif cfg.enable_metrics:
        # User explicitly asked for metrics but the installed servicer can't
        # start the sidecar that serves them — fail loud rather than silently
        # produce a server with no /metrics endpoint.
        raise RuntimeError(
            "--enable-metrics requires smg-grpc-servicer ≥ 0.5.3 (the version "
            "that accepts 'on_request_manager_ready'); installed version "
            "lacks the hook so the HTTP sidecar would never start. Upgrade "
            "smg-grpc-servicer or remove --enable-metrics."
        )
    else:
        logger.warning(
            "Installed smg-grpc-servicer does not accept "
            "'on_request_manager_ready'; HTTP sidecar disabled "
            "(no /metrics, /start_profile, /stop_profile). "
            "Upgrade smg-grpc-servicer to ≥ 0.5.3 to enable it."
        )

    try:
        await _serve_grpc(server_args, model_info, **serve_kwargs)
    finally:
        if sidecar_runner is not None:
            try:

View on GitHub (pinned to 0132848349)

Solutions

  1. pip install -U 'smg-grpc-servicer>=0.5.3' (with the [sglang] extra if needed)
  2. Or drop --enable-metrics from the launch arguments
  3. Verify the installed version with pip show smg-grpc-servicer after upgrading

Example fix

# before
pip install 'smg-grpc-servicer[sglang]==0.4.0'
python -m sglang.launch_server --grpc --enable-metrics ...
# after
pip install -U 'smg-grpc-servicer[sglang]>=0.5.3'
python -m sglang.launch_server --grpc --enable-metrics ...
Defensive patterns

Strategy: validation

Validate before calling

from importlib.metadata import version
from packaging.version import Version
assert Version(version("smg-grpc-servicer")) >= Version("0.5.3"), "upgrade smg-grpc-servicer for --enable-metrics"

Type guard

def metrics_sidecar_supported() -> bool:
    from importlib.metadata import version
    from packaging.version import Version
    try:
        return Version(version("smg-grpc-servicer")) >= Version("0.5.3")
    except Exception:
        return False

Try / catch

try:
    serve_grpc(server_args)
except RuntimeError as e:
    if "enable-metrics" in str(e):
        server_args.enable_metrics = False
        serve_grpc(server_args)
    else:
        raise

Prevention

When it happens

Trigger: Launching gRPC mode with cfg.enable_metrics true while the installed smg-grpc-servicer predates 0.5.3 (sidecar_supported is false).

Common situations: Pinning an old smg-grpc-servicer in Docker/requirements while adding --enable-metrics to the launch flags; upgrading sglang but not the servicer extra; CI images with stale extras.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/7a98f7c5ce3dee2c. Report an issue: GitHub.