sgl-project/sglang · error · ValueError

Unknown dumper control method: {method!r}

Error message

Unknown dumper control method: {method!r}

What it means

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.

Source

Thrown at python/sglang/srt/debug_utils/dumper.py:1386

    # ------------------------------- public ---------------------------------

    def handle_request(self, *, method: str, body: dict[str, Any]) -> list[dict]:
        return self._rpc_broadcast._handle_request_inner(method=method, body=body)

    # ------------------------------- private ---------------------------------

    def _handle_request_inner(self, *, method: str, body: dict[str, Any]) -> dict:
        if method == "get_state":
            return self._dumper.get_state()
        elif method == "configure":
            self._dumper.configure(**body)
            return {}
        elif method == "reset":
            self._dumper.reset()
            return {}
        else:
            raise ValueError(f"Unknown dumper control method: {method!r}")


# -------------------------------------- http control server ------------------------------------------


def _start_http_server(*, prefix: str, target: object, http_port: int):
    handler_class = _make_http_handler(prefix=prefix, target=target)
    server = HTTPServer(("0.0.0.0", http_port), handler_class)
    thread = threading.Thread(target=server.serve_forever, daemon=True)
    thread.start()


def _make_http_handler(*, prefix: str, target):
    class _HTTPHandler(BaseHTTPRequestHandler):
        def do_POST(self):
            if not self.path.startswith(prefix):
                self.send_error(404)
                return

View on GitHub (pinned to 0132848349)

Solutions

  1. Check the method strings dispatched in _handle_request_inner (configure, reset, ...) and use exactly those
  2. Upgrade/downgrade the client to match the server's sglang version
  3. List methods via any introspection endpoint or read the source before scripting the control API

Example fix

# before
{"method": "confgiure", "body": {...}}
# after
{"method": "configure", "body": {...}}
Defensive patterns

Strategy: validation

Validate before calling

VALID_METHODS = {"configure", "reset"}  # mirror _handle_request_inner
assert req["method"] in VALID_METHODS, f"method must be one of {VALID_METHODS}"

Try / catch

try:
    resp = handle_request(req)
except ValueError as e:
    if "Unknown dumper control method" in str(e):
        # check dispatch table in source, correct method name, retry once

Prevention

When it happens

Trigger: POSTing {'method': 'confgiure', ...} (typo), or calling handle_request with a method added in a different sglang version than the client speaks.

Common situations: Client/server version skew after upgrade; hand-crafted curl requests to the control port; stale helper scripts using removed method names.

Related errors


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