{"record":{"id":"7a98f7c5ce3dee2c","repo":"sgl-project/sglang","slug":"enable-metrics-requires-smg-grpc-servicer-0-5","errorCode":null,"errorMessage":"--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.","messagePattern":"--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\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/entrypoints/grpc_server.py","lineNumber":248,"sourceCode":"                exc_info=True,\n            )\n\n    # Older smg-grpc-servicer releases (≤ 0.5.2) accept only (server_args,\n    # model_info) and reject the on_request_manager_ready hook. The hook is\n    # what calls _start_sidecar_server, so dropping the kwarg disables the\n    # entire HTTP sidecar (Prometheus /metrics and /start_profile +\n    # /stop_profile). Core gRPC serving still works without it.\n    serve_kwargs: dict = {}\n    sidecar_supported = (\n        \"on_request_manager_ready\" in inspect.signature(_serve_grpc).parameters\n    )\n    if sidecar_supported:\n        serve_kwargs[\"on_request_manager_ready\"] = _on_request_manager_ready\n    elif cfg.enable_metrics:\n        # User explicitly asked for metrics but the installed servicer can't\n        # start the sidecar that serves them — fail loud rather than silently\n        # produce a server with no /metrics endpoint.\n        raise RuntimeError(\n            \"--enable-metrics requires smg-grpc-servicer ≥ 0.5.3 (the version \"\n            \"that accepts 'on_request_manager_ready'); installed version \"\n            \"lacks the hook so the HTTP sidecar would never start. Upgrade \"\n            \"smg-grpc-servicer or remove --enable-metrics.\"\n        )\n    else:\n        logger.warning(\n            \"Installed smg-grpc-servicer does not accept \"\n            \"'on_request_manager_ready'; HTTP sidecar disabled \"\n            \"(no /metrics, /start_profile, /stop_profile). \"\n            \"Upgrade smg-grpc-servicer to ≥ 0.5.3 to enable it.\"\n        )\n\n    try:\n        await _serve_grpc(server_args, model_info, **serve_kwargs)\n    finally:\n        if sidecar_runner is not None:\n            try:","sourceCodeStart":230,"sourceCodeEnd":266,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/entrypoints/grpc_server.py#L230-L266","documentation":"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.","triggerScenarios":"Launching gRPC mode with cfg.enable_metrics true while the installed smg-grpc-servicer predates 0.5.3 (sidecar_supported is false).","commonSituations":"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.","solutions":["pip install -U 'smg-grpc-servicer>=0.5.3' (with the [sglang] extra if needed)","Or drop --enable-metrics from the launch arguments","Verify the installed version with pip show smg-grpc-servicer after upgrading"],"exampleFix":"# before\npip install 'smg-grpc-servicer[sglang]==0.4.0'\npython -m sglang.launch_server --grpc --enable-metrics ...\n# after\npip install -U 'smg-grpc-servicer[sglang]>=0.5.3'\npython -m sglang.launch_server --grpc --enable-metrics ...","handlingStrategy":"validation","validationCode":"from importlib.metadata import version\nfrom packaging.version import Version\nassert Version(version(\"smg-grpc-servicer\")) >= Version(\"0.5.3\"), \"upgrade smg-grpc-servicer for --enable-metrics\"","typeGuard":"def metrics_sidecar_supported() -> bool:\n    from importlib.metadata import version\n    from packaging.version import Version\n    try:\n        return Version(version(\"smg-grpc-servicer\")) >= Version(\"0.5.3\")\n    except Exception:\n        return False","tryCatchPattern":"try:\n    serve_grpc(server_args)\nexcept RuntimeError as e:\n    if \"enable-metrics\" in str(e):\n        server_args.enable_metrics = False\n        serve_grpc(server_args)\n    else:\n        raise","preventionTips":["Check smg-grpc-servicer version in deployment scripts before enabling --enable-metrics","Pin 'smg-grpc-servicer[sglang]>=0.5.3' in requirement files"],"tags":["grpc","metrics","version-mismatch","dependency","sglang"],"backgroundTag":"version-mismatch","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}