{"record":{"id":"7e8d49f598439db3","repo":"oraios/serena","slug":"language-server-not-started","errorCode":null,"errorMessage":"Language Server not started","messagePattern":"Language Server not started","errorType":"exception","errorClass":"SolidLSPException","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/vue_language_server.py","lineNumber":216,"sourceCode":"                return\n            log.exception(\"Error while warming up Vue language server operational state\")\n        except Exception:\n            log.exception(\"Error while warming up Vue language server operational state\")\n\n    def _ensure_ls_operational(self) -> None:\n        # short-circuit completed warm-up\n        if self._ls_operational_ready_event.is_set():\n            return\n\n        # serialize the warm-up sequence\n        with self._ls_operational_lock:\n            # short-circuit repeated callers after waiting for the lock\n            if self._ls_operational_ready_event.is_set():\n                return\n\n            # validate server availability\n            if not self.server_started:\n                raise SolidLSPException(\"Language Server not started\")\n\n            # wait for cross-file reference readiness\n            if not self._has_waited_for_cross_file_references:\n                sleep(self._get_wait_time_for_cross_file_referencing())\n                self._has_waited_for_cross_file_references = True\n\n            # index Vue files on the companion TypeScript server\n            self._ensure_vue_files_indexed_on_ts_server()\n\n            # publish operational readiness\n            self._ls_operational_ready_event.set()\n\n    @override\n    def is_ignored_dirname(self, dirname: str) -> bool:\n        return super().is_ignored_dirname(dirname) or dirname in [\n            \"node_modules\",\n            \"dist\",\n            \"build\",","sourceCodeStart":198,"sourceCodeEnd":234,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/vue_language_server.py#L198-L234","documentation":"Raised as SolidLSPException when a request (references, definition, rename, diagnostics, etc.) is attempted while the Vue language server process has not been started or has not finished becoming operational. _ensure_ls_operational gates all API calls behind server_started to prevent requests on a dead/never-launched LSP connection.","triggerScenarios":"Calling request_references/request_definition/request_file_references/request_rename_symbol_edit/request_text_document_diagnostics, or warm-up via _warm_up_ls_operational_state, when self.server_started is False — i.e., before start() completed or after the server process crashed/was stopped.","commonSituations":"Calling API methods before the server finished initializing (Vue server startup is slow); server process crashed after launch (bad Node install, OOM); calling methods after stop()/context exit; race where the readiness lock was acquired but startup failed silently.","solutions":["Ensure start()/initialization completed and the readiness event is set before issuing requests.","Check logs for the server process failing to launch (node missing, vue-language-server binary path wrong) and fix the underlying startup error.","Re-create/restart the SolidLSP instance if the server previously crashed or was stopped.","Wrap requests in retry/backoff to tolerate slow Vue server startup, or increase cross-file reference wait time.","Verify the vue-language-server and typescript-language-server binaries exist (see install-related errors)."],"exampleFix":"// before\nls = SolidLSP(\"vue\", \"/repo\")\nrefs = ls.request_references(\"src/App.vue\", 10, 0)  # may raise if startup is slow/crashed\n// after\nls = SolidLSP(\"vue\", \"/repo\")\nls.start()\ntry:\n    refs = ls.request_references(\"src/App.vue\", 10, 0)\nexcept SolidLSPException:\n    ls.stop(); ls.start()\n    refs = ls.request_references(\"src/App.vue\", 10, 0)","handlingStrategy":"try-catch","validationCode":"if not hasattr(ls, 'server_started') or not ls.server_started:\n    ls.start()  # or wait for readiness before issuing requests","typeGuard":"def is_ready(ls) -> bool:\n    return bool(getattr(ls, \"server_started\", False)) and getattr(ls, \"_ls_operational_ready_event\", None) is not None and ls._ls_operational_ready_event.is_set()","tryCatchPattern":"try:\n    refs = ls.request_references(file_path, line, col)\nexcept SolidLSPException as e:\n    if str(e) == \"Language Server not started\":\n        ls.stop(); ls.start()\n        refs = ls.request_references(file_path, line, col)\n    else:\n        raise","preventionTips":["Always start the server (and await readiness) before making requests; use context managers where available.","Don't reuse a SolidLSP instance after stop() or process crash — recreate it.","Check server logs for early process death (Node missing, wrong binary path).","In long-running services, add health checks that verify server_started before dispatching requests."],"tags":["lifecycle","lsp","vue","server-not-started"],"backgroundTag":"server-not-started","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}