{"record":{"id":"e384a6760a189f74","repo":"vllm-project/vllm","slug":"engine-core-output-dispatcher-closed-message","errorCode":null,"errorMessage":"engine-core output dispatcher closed: {message}","messagePattern":"engine-core output dispatcher closed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"rust/src/engine-core-client/src/error.rs","lineNumber":78,"sourceCode":"    #[error(\"external coordinator mode is not implemented yet\")]\n    UnsupportedExternalCoordinator,\n    #[error(\"unsupported field `{field}` in {context}\")]\n    UnsupportedField {\n        context: &'static str,\n        field: &'static str,\n    },\n    #[error(\"engine control channel closed unexpectedly: {message}\")]\n    ControlClosed { message: String },\n    #[error(\"request `{request_id}` is already in flight\")]\n    DuplicateRequestId { request_id: String },\n    #[error(\n        \"data parallel rank {rank} is not connected to this frontend; connected ranks: {connected_ranks:?}\"\n    )]\n    InvalidDataParallelRank {\n        rank: u32,\n        connected_ranks: Vec<u32>,\n    },\n    #[error(\"engine-core output dispatcher closed: {message}\")]\n    DispatcherClosed { message: String },\n    #[error(\"engine-core client is closed: {message}\")]\n    ClientClosed { message: String },\n    #[error(\"request output stream for `{request_id}` closed unexpectedly\")]\n    RequestStreamClosed { request_id: String },\n    #[error(\"utility call `{method}` failed (call_id={call_id}): {message}\")]\n    UtilityCallFailed {\n        method: String,\n        call_id: UtilityCallId,\n        message: String,\n    },\n    #[error(\"utility call `{method}` returned an invalid result (call_id={call_id}): {message}\")]\n    UtilityResultDecode {\n        method: String,\n        call_id: UtilityCallId,\n        message: String,\n    },\n    #[error(\"utility call `{method}` closed unexpectedly (call_id={call_id})\")]","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/rust/src/engine-core-client/src/error.rs#L60-L96","documentation":"EngineCoreError::DispatcherClosed means the internal task that demultiplexes engine-core outputs (the dispatcher) terminated while the client was still using it. Every request stream ultimately depends on this dispatcher, so its closure indicates the engine-core output channel (ZMQ) broke or the dispatcher task panicked.","triggerScenarios":"Any client operation requiring engine-core output (generate stream, utility calls) after the engine-core process died, the output ZMQ socket closed, or the dispatcher task panicked while decoding a frame.","commonSituations":"Engine-core crash (OOM, panic in scheduler); ZMQ endpoint mismatch or socket exhaustion; abrupt engine shutdown while requests are streaming.","solutions":["Inspect engine-core stderr/logs for the crash that killed the output channel","Address the root cause (memory limits, model config, dispatcher decode bug)","Restart the engine-core and rebuild the client to get a fresh dispatcher"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":"pub fn is_dispatcher_closed(e: &vllm_engine_core_client::Error) -> bool {\n    matches!(e, vllm_engine_core_client::Error::DispatcherClosed { .. })\n}","tryCatchPattern":"match stream.next().await {\n    Some(Err(e @ vllm_engine_core_client::Error::DispatcherClosed { .. })) => {\n        tracing::error!(\"output dispatcher died: {e}\");\n        // all in-flight requests are dead: surface to callers and restart engine\n        Err(e.into())\n    }\n    other => other.transpose().map_err(Into::into),\n}","preventionTips":["Watch the engine-core child process and treat its exit as fatal for all streams","Keep engine memory limits (gpu-memory-utilization, batch caps) conservative to avoid OOM crashes","Aggregate dispatcher errors centrally instead of per-request so recovery is coordinated"],"tags":["zmq","dispatcher","engine-core","process-crash","rust"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}