{"record":{"id":"b957ea5bce113b5d","repo":"sgl-project/sglang","slug":"unknown-dumper-control-method-method-r","errorCode":null,"errorMessage":"Unknown dumper control method: {method!r}","messagePattern":"Unknown dumper control method: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/debug_utils/dumper.py","lineNumber":1386,"sourceCode":"\n    # ------------------------------- public ---------------------------------\n\n    def handle_request(self, *, method: str, body: dict[str, Any]) -> list[dict]:\n        return self._rpc_broadcast._handle_request_inner(method=method, body=body)\n\n    # ------------------------------- private ---------------------------------\n\n    def _handle_request_inner(self, *, method: str, body: dict[str, Any]) -> dict:\n        if method == \"get_state\":\n            return self._dumper.get_state()\n        elif method == \"configure\":\n            self._dumper.configure(**body)\n            return {}\n        elif method == \"reset\":\n            self._dumper.reset()\n            return {}\n        else:\n            raise ValueError(f\"Unknown dumper control method: {method!r}\")\n\n\n# -------------------------------------- http control server ------------------------------------------\n\n\ndef _start_http_server(*, prefix: str, target: object, http_port: int):\n    handler_class = _make_http_handler(prefix=prefix, target=target)\n    server = HTTPServer((\"0.0.0.0\", http_port), handler_class)\n    thread = threading.Thread(target=server.serve_forever, daemon=True)\n    thread.start()\n\n\ndef _make_http_handler(*, prefix: str, target):\n    class _HTTPHandler(BaseHTTPRequestHandler):\n        def do_POST(self):\n            if not self.path.startswith(prefix):\n                self.send_error(404)\n                return","sourceCodeStart":1368,"sourceCodeEnd":1404,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/debug_utils/dumper.py#L1368-L1404","documentation":"The dumper's control endpoint dispatches a small fixed set of methods (configure, reset, and siblings) by string lookup in _handle_request_inner. Any other method name in the request body hits the else branch and raises this ValueError, which the HTTP/RPC layer surfaces to the caller.","triggerScenarios":"POSTing {'method': 'confgiure', ...} (typo), or calling handle_request with a method added in a different sglang version than the client speaks.","commonSituations":"Client/server version skew after upgrade; hand-crafted curl requests to the control port; stale helper scripts using removed method names.","solutions":["Check the method strings dispatched in _handle_request_inner (configure, reset, ...) and use exactly those","Upgrade/downgrade the client to match the server's sglang version","List methods via any introspection endpoint or read the source before scripting the control API"],"exampleFix":"# before\n{\"method\": \"confgiure\", \"body\": {...}}\n# after\n{\"method\": \"configure\", \"body\": {...}}","handlingStrategy":"validation","validationCode":"VALID_METHODS = {\"configure\", \"reset\"}  # mirror _handle_request_inner\nassert req[\"method\"] in VALID_METHODS, f\"method must be one of {VALID_METHODS}\"","typeGuard":null,"tryCatchPattern":"try:\n    resp = handle_request(req)\nexcept ValueError as e:\n    if \"Unknown dumper control method\" in str(e):\n        # check dispatch table in source, correct method name, retry once","preventionTips":["Keep client and server on the same sglang version","Centralize control-method names as constants shared by client and server"],"tags":["rpc","http-control","method-dispatch"],"backgroundTag":"unknown-rpc-method","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}