{"record":{"id":"91c5ee77385c09e0","repo":"astral-sh/ruff","slug":"client-exited-without-proper-shutdown-sequence","errorCode":null,"errorMessage":"client exited without proper shutdown sequence","messagePattern":"client exited without proper shutdown sequence","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/ruff_server/src/server/main_loop.rs","lineNumber":29,"sourceCode":"    server::{api, schedule},\n    session::Client,\n};\n\npub(crate) type MainLoopSender = crossbeam::channel::Sender<Event>;\npub(crate) type MainLoopReceiver = crossbeam::channel::Receiver<Event>;\n\nimpl Server {\n    pub(super) fn main_loop(&mut self) -> crate::Result<()> {\n        self.initialize(&Client::new(\n            self.main_loop_sender.clone(),\n            self.connection.sender.clone(),\n        ));\n\n        let mut scheduler = schedule::Scheduler::new(self.worker_threads);\n\n        while let Ok(next_event) = self.next_event() {\n            let Some(next_event) = next_event else {\n                anyhow::bail!(\"client exited without proper shutdown sequence\");\n            };\n\n            match next_event {\n                Event::Message(msg) => {\n                    let client = Client::new(\n                        self.main_loop_sender.clone(),\n                        self.connection.sender.clone(),\n                    );\n\n                    let task = match msg {\n                        Message::Request(req) => {\n                            self.session\n                                .request_queue_mut()\n                                .incoming_mut()\n                                .register(req.id.clone(), req.method.clone());\n\n                            if self.session.is_shutdown_requested() {\n                                tracing::warn!(","sourceCodeStart":11,"sourceCodeEnd":47,"githubUrl":"https://github.com/astral-sh/ruff/blob/672bb4edf04c84f8b0753346359daee4057158f2/crates/ruff_server/src/server/main_loop.rs#L11-L47","documentation":"Error \"client exited without proper shutdown sequence\" thrown in astral-sh/ruff.","triggerScenarios":"Thrown at crates/ruff_server/src/server/main_loop.rs:29 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"672bb4edf04c84f8b0753346359daee4057158f2","analyzedAt":"2026-08-16T08:54:05.464Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}