🐞 Language Server Requests Should Timeout
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne damit, die Behandlung von Language-Server-Anfragen und das Herunterfahren in CodeEdit zu lokalisieren, und reproduziere dann das Problem mit der in Xcode 16 enthaltenen sourcekit-lsp-Binärdatei. Definiere das Timeout-Verhalten für gewöhnliche, lang laufende und sofortige Anfragen; fertig bedeutet, dass Anfragen nicht mehr unbestimmt lange warten und der Exit-Fall das Beenden ermöglicht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
There is a chance that language servers (maliciously or due to a bug) may not respond to requests made by the client (CodeEdit). This can cause problems, for example:
- Memory build up as syntax token requests pile up with no responses.
- App refusing to quit before the language server exits, but the language server does not respond to the
exitmessage. - UI hanging forever after a request (eg for a definition search).
In each of these cases one solution would be to time out the request. I think our LSP requests should have a default timeout length.
This has the caveat for requests that may take a long time. Those requests will need to be overridable so they can take longer. The same goes for requests that need immediate response (like the exit message), which will need to be shorter.
To Reproduce
The sourcekit-lsp binary that ships with Xcode 16 is bugged, and will not respond to the exit message. This leaves CodeEdit hanging when quitting the app and requires a force quit.
The same LSP does not respond to semantic token requests (despite declaring the capability, this is a bug with sourcekit-lsp). This may cause cached request handlers to build up over time.
Expected Behavior
Each language server request should have a timeout parameter. This likely means creating a new LanguageServer connection type that passes messages through to another type, but provides a timeout handler for requests. This may be something we can contribute back to the LanguageServer package.
Version Information
CodeEdit: 0.3.3
Additional Context
No response
Screenshots
No response
- Vorherrschende Sprache
- Swift
- Sterne
- 23k
- Forks
- 1.2k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus CodeEditApp/CodeEdit
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
CodeEditApp/CodeEdit#2190 ·
-
Is this project dead? Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 15/100
CodeEditApp/CodeEdit#2195 · 7 Reaktionen ·
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
CodeEditApp/CodeEdit#2185 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
CodeEditApp/CodeEdit#2181 ·
-
creashes on starting Offenbug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
CodeEditApp/CodeEdit#2180 ·
Alle Issues in CodeEditApp/CodeEdit
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
googleapis/google-cloud-swift#1106 ·
-
bug channel: beta feature: preferences feature: ui/ux
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Cocoanetics/SwiftACP#52 ·