{"record":{"id":"0a114fe50c9d194b","repo":"vllm-project/vllm","slug":"utility-call-method-failed-call-id-call-id","errorCode":null,"errorMessage":"utility call `{method}` failed (call_id={call_id}): {message}","messagePattern":"utility call `(.+?)` failed \\(call_id=(.+?)\\): (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"rust/src/engine-core-client/src/error.rs","lineNumber":84,"sourceCode":"    },\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})\")]\n    UtilityCallClosed { method: String, call_id: u64 },\n    #[error(\"utility call `{method}` returned inconsistent results across engines: {values}\")]\n    InconsistentUtilityResults { method: String, values: String },\n\n    /// A special variant to allow cloning the same error.\n    #[error(transparent)]","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/rust/src/engine-core-client/src/error.rs#L66-L102","documentation":"EngineCoreError::UtilityCallFailed wraps a failure reported by the engine-core side of a utility RPC (identified by method name and call_id). The `message` is the engine-side error text; the client itself is healthy — the invoked operation failed remotely.","triggerScenarios":"Invoking a utility method (e.g. metrics, health, or introspection calls routed through the utility channel) where the engine-core returns an error: unsupported operation for the current engine state, invalid arguments, or internal engine failure.","commonSituations":"Polling metrics before the engine finished initialization; calling a utility only valid in certain scheduler modes; version skew where the frontend requests a utility the engine-core build does not support.","solutions":["Read the nested `message` — it is the engine-core's own error and names the real cause","Only call the utility once the engine reports ready/initialized","Align frontend and engine-core versions so both sides implement the utility method"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Only issue utility calls once the engine reports readiness\nif !engine_ready().await { return Err(anyhow::anyhow!(\"engine not ready\")); }\nclient.utility_call(method, payload).await","typeGuard":"pub fn is_utility_failed(e: &vllm_engine_core_client::Error) -> bool {\n    matches!(e, vllm_engine_core_client::Error::UtilityCallFailed { .. })\n}","tryCatchPattern":"if let Err(vllm_engine_core_client::Error::UtilityCallFailed { method, call_id, message }) = res {\n    tracing::error!(\"utility {method} ({call_id}) failed engine-side: {message}\");\n    // engine-side failure: fix per message, do not blind-retry state-mutating calls\n}","preventionTips":["Read the embedded engine-side message before deciding to retry","Defer utility calls until engine initialization completes","Keep frontend and engine-core versions in lockstep so utility contracts match"],"tags":["rpc","utility-call","engine-core","rust"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}