{"record":{"id":"8636a3fe9b5ca1ec","repo":"vllm-project/vllm","slug":"engine-id-mismatch-for-dp-rank-payload-dp-rank","errorCode":null,"errorMessage":"Engine ID mismatch for dp_rank={payload.dp_rank}: expected {dp_entry.engine_id}, got {payload.engine_id}","messagePattern":"Engine ID mismatch for dp_rank=(.+?): expected (.+?), got (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py","lineNumber":90,"sourceCode":"    def shutdown(self):\n        if self.server_thread is None or self.server is None or not self.server.started:\n            return\n\n        self.server.should_exit = True\n        self.server_thread.join()\n        logger.info(\"Mooncake Bootstrap Server stopped.\")\n\n    async def register_worker(self, payload: RegisterWorkerPayload):\n        \"\"\"Handles registration of a prefiller worker.\"\"\"\n        if payload.dp_rank not in self.workers:\n            self.workers[payload.dp_rank] = EngineEntry(\n                engine_id=payload.engine_id,\n                worker_addr={},\n            )\n\n        dp_entry = self.workers[payload.dp_rank]\n        if dp_entry.engine_id != payload.engine_id:\n            raise HTTPException(\n                status_code=400,\n                detail=(\n                    f\"Engine ID mismatch for dp_rank={payload.dp_rank}: \"\n                    f\"expected {dp_entry.engine_id}, got {payload.engine_id}\"\n                ),\n            )\n        if payload.tp_rank not in dp_entry.worker_addr:\n            dp_entry.worker_addr[payload.tp_rank] = {}\n\n        tp_entry = dp_entry.worker_addr[payload.tp_rank]\n        if payload.pp_rank in tp_entry:\n            raise HTTPException(\n                status_code=400,\n                detail=(\n                    f\"Worker with dp_rank={payload.dp_rank}, \"\n                    f\"tp_rank={payload.tp_rank}, pp_rank={payload.pp_rank} \"\n                    f\"is already registered at \"\n                    f\"{tp_entry[payload.pp_rank]}, \"","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/vllm/distributed/kv_transfer/kv_connector/v1/mooncake/mooncake_utils.py#L72-L108","documentation":"HTTP 400 from the Mooncake bootstrap server's register_worker endpoint: a worker registered under a dp_rank that already has an entry, but with a different engine_id. The bootstrap server keys live workers by (dp_rank, tp_rank, pp_rank) and assumes one engine per dp_rank; a different engine_id means a second, distinct vLLM engine claims the same data-parallel rank — usually a stale registration from a previous engine instance that the server never forgot.","triggerScenarios":"A vLLM engine restarts (new engine_id) and re-registers while the bootstrap server still holds the old engine's entry; two separate vLLM clusters pointed at the same bootstrap server with overlapping dp_ranks; misconfigured dp_rank causing collisions between independent deployments.","commonSituations":"Recovering from a crash by restarting only the engine but not the Mooncake bootstrap server; sharing one bootstrap server between environments (staging/prod) without offsetting dp ranks; duplicate-launch of an engine.","solutions":["Restart the Mooncake bootstrap server (or clear its worker registry) so stale engine entries are dropped, then let workers re-register.","Ensure each vLLM deployment pointing at a shared bootstrap server uses a distinct dp_rank range.","Avoid running two engines concurrently with the same dp_rank against one bootstrap server."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"Catch the HTTP 400 from register_worker; on 'Engine ID mismatch', restart/clear the bootstrap server registry (or wait for lease expiry), then retry worker registration.","preventionTips":["Give each vLLM deployment a distinct dp_rank range when sharing a bootstrap server","Restart the Mooncake bootstrap server alongside engine restarts","Never run two engines with the same dp_rank against one bootstrap server"],"tags":["mooncake","bootstrap-server","engine-id","dp-rank","http-400","kv-transfer"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}