{"record":{"id":"e9dff679005c8ad5","repo":"vllm-project/vllm","slug":"engine-input-registration-timed-out-after-timeout","errorCode":null,"errorMessage":"engine input registration timed out after {timeout:?}","messagePattern":"engine input registration timed out after (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"rust/src/engine-core-client/src/error.rs","lineNumber":46,"sourceCode":"    ValueDecode(#[from] rmpv::decode::Error),\n    #[error(\"messagepack ext value decode failed: {message}\")]\n    ExtValueDecode { message: String },\n    #[error(\"invalid structured outputs params: {message}\")]\n    InvalidStructuredOutputsParams { message: String },\n    #[error(\"io error\")]\n    Io(#[from] std::io::Error),\n    #[error(\"transport error\")]\n    Transport(#[from] zeromq::ZmqError),\n    #[error(\"ZMQ runtime task failed\")]\n    ZmqRuntimeTask(#[from] tokio::task::JoinError),\n    #[error(\"engine core reported fatal failure\")]\n    EngineCoreDead,\n    #[error(\"startup handshake timed out while waiting for {stage} after {timeout:?}\")]\n    HandshakeTimeout {\n        stage: &'static str,\n        timeout: Duration,\n    },\n    #[error(\"engine input registration timed out after {timeout:?}\")]\n    InputRegistrationTimeout { timeout: Duration },\n    #[error(\"unexpected engine id in startup handshake: expected {expected:?}, got {actual:?}\")]\n    UnexpectedHandshakeIdentity { expected: Vec<u8>, actual: Vec<u8> },\n    #[error(\"unexpected startup handshake message: {message}\")]\n    UnexpectedHandshakeMessage { message: String },\n    #[error(\"unexpected non-control output on coordinator path: {message}\")]\n    UnexpectedCoordinatorOutput { message: String },\n    #[error(\"unexpected output on main dispatcher path: {message}\")]\n    UnexpectedDispatcherOutput { message: String },\n    #[error(\"coordinator requires a Python-compatible two-byte engine id, got {engine_id:?}\")]\n    UnsupportedCoordinatorEngineId { engine_id: Vec<u8> },\n    #[error(\"unsupported auxiliary frame(s): expected 1 frame, got {frame_count}\")]\n    UnsupportedAuxFrames { frame_count: usize },\n    #[error(\"external coordinator mode is not implemented yet\")]\n    UnsupportedExternalCoordinator,\n    #[error(\"unsupported field `{field}` in {context}\")]\n    UnsupportedField {\n        context: &'static str,","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/vllm-project/vllm/blob/c794754062d49a8fdb63ab3c5215b488b865030c/rust/src/engine-core-client/src/error.rs#L28-L64","documentation":"Error::InputRegistrationTimeout is raised in transport.rs:478-482 (wait_for_input_registrations) when, after the READY phase, an engine fails to connect and register on the shared frontend input socket within ready_timeout. Registration frames are [identity, ready-payload] pairs validated against the expected engine set.","triggerScenarios":"The final step of connect_handshake (step 6) or connect_bootstrapped: each engine must send its 2-frame registration on the input RouterSocket within ready_timeout. Any engine missing that deadline triggers this error with the configured timeout embedded.","commonSituations":"Engine received INIT addresses it cannot reach (firewall, advertised_host wrong, docker network isolation), engine crashed between READY and connecting to inputs, or (bootstrapped mode) engine_start_index/engine_count disagree with what the supervisor launched so the expected identity set never matches. Distinct from HandshakeTimeout: the engine finished the handshake but never dialed the input socket.","solutions":["Verify the input/output addresses handed to engines (INIT message in handshake mode; supervisor-provided addresses in bootstrapped mode) are reachable from engine containers","In bootstrapped mode, check engine_start_index + engine_count match the supervisor's engine rank layout (see connect_bootstrapped validation)","Raise ready_timeout if engine connect is just slow","Check engine logs for the moment after READY — a crash there produces exactly this timeout"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"fn bootstrapped_indices_valid(start: u32, count: usize) -> bool {\n    count >= 1 && start <= u16::MAX as u32 && (start as usize + count) <= u16::MAX as usize + 1\n}","typeGuard":"fn is_input_registration_timeout(e: &engine_core_client::Error) -> bool {\n    matches!(e, engine_core_client::Error::InputRegistrationTimeout { .. })\n}","tryCatchPattern":"if matches!(err, engine_core_client::Error::InputRegistrationTimeout { timeout }) {\n    tracing::error!(?timeout, \"engines finished handshake but never registered on inputs; check network reachability\");\n}","preventionTips":["In bootstrapped mode, validate engine_start_index/engine_count against the supervisor's rank layout before connect","Ensure input/output addresses are reachable from engine containers (no NAT/firewall between them)","Watch engine logs between READY and input connect — a crash there shows up as this timeout"],"tags":["rust","startup","registration","timeout","network"],"backgroundTag":null,"analyzedSha":"c794754062d49a8fdb63ab3c5215b488b865030c","analyzedAt":"2026-08-14T21:17:39.825Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}