{"record":{"id":"df04c81f5563d624","repo":"nautechsystems/nautilus_trader","slug":"disconnect-readiness-timeout-while-waiting-for-eng","errorCode":null,"errorMessage":"disconnect readiness timeout while waiting for engine disconnections","messagePattern":"disconnect readiness timeout while waiting for engine disconnections","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/live/src/node/mod.rs","lineNumber":793,"sourceCode":"            }\n\n            let now = dst::time::Instant::now();\n            if now >= deadline {\n                break;\n            }\n\n            dst::time::sleep(interval.min(deadline - now)).await;\n        }\n\n        log::error!(\n            \"Timed out ({:?}) waiting for engines to disconnect\\n\\\n             DataEngine.check_disconnected() == {}\\n\\\n             ExecEngine.check_disconnected() == {}\",\n            timeout,\n            self.kernel.data_engine().check_disconnected(),\n            self.kernel.exec_engine().borrow().check_disconnected(),\n        );\n        anyhow::bail!(\"disconnect readiness timeout while waiting for engine disconnections\")\n    }\n\n    fn log_connection_status(&self) {\n        let data_status = self.kernel.data_client_connection_status();\n        let exec_status = self.kernel.exec_client_connection_status();\n\n        let mut rows: Vec<ClientStatus> = Vec::new();\n\n        for (client_id, connected) in data_status {\n            rows.push(ClientStatus {\n                client: client_id.to_string(),\n                client_type: \"Data\",\n                connected,\n            });\n        }\n\n        for (client_id, connected) in exec_status {\n            rows.push(ClientStatus {","sourceCodeStart":775,"sourceCodeEnd":811,"githubUrl":"https://github.com/nautechsystems/nautilus_trader/blob/18893faf8b356be3320add8de2f861b0b647cf06/crates/live/src/node/mod.rs#L775-L811","documentation":"Shutdown timeout in await_engines_disconnected: the data and execution engines did not report full disconnection within the configured grace period; the log includes the engines' check_disconnected flags for diagnosis.","triggerScenarios":"Thrown at crates/live/src/node/mod.rs:793 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Increase the disconnect/shutdown timeout configuration","Inspect the logged DataEngine/ExecEngine disconnect flags to find which clients are stuck","Verify venue clients respond to disconnect commands"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"18893faf8b356be3320add8de2f861b0b647cf06","analyzedAt":"2026-09-08T20:49:34.690Z","contentChangedAt":"2026-09-08T20:49:34.690Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}