-
Notifications
You must be signed in to change notification settings - Fork 345
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upgrade getgauge/common to solve typescript server crash issue #2422
Conversation
The getgauge/common upgrade solves the issue where the gauge server crashes whenever a project is loaded that uses the ts plugin. The cause is described here getgauge#2419 This commit closes/permanently fixes issues like getgauge/gauge-vscode#735 getgauge/gauge-vscode#636 getgauge/gauge-vscode#885 Signed-off-by: Lukas Bockstaller <lukas.bockstaller@posteo.de>
Sorry @chadlwilson, I know you are still sanity testing ruby but I couldn't resist opening the PR after that debugging journey 😅 |
Signed-off-by: Chad Wilson <chadw@thoughtworks.com>
The plugin functional tests for PRs seem to run with the |
Getting these changes released is currently everything that I need to unblock us on our product side. |
Benchmark Results
Notes
See Workflow log for more details. |
@bockstaller Thank you for contributing to gauge. Your pull request has been labeled as a release candidate 🎉🎉. Merging this PR will trigger a release. Please bump up the version as part of this PR.Instructions to bump the version can found at CONTRIBUTING.md If the CONTRIBUTING.md file does not exist or does not include instructions about bumping up the version, please looks previous commits in git history to see what changes need to be done. |
OK, not sure I understand the gauge architecture in sufficient detail to intuitively understand why it's optional on the plugin side of things, so will wait for some input from more expert folks :-) |
I'd like to explain and get corrected if I am wrong. Gauge uses stdio based jsonrpc2 as the communication channel when used as a language server, as it is the case when used with the vscode extension. The patched prepareCommand function is used in gauge to launch the plugins. The intention was to allow for debugging with gauge-ruby, but was never used as gauge ruby has its own launcher functionality that passes on os.Stdim This is only problematic in the case of node.js as runtime used for gauge-ts. As it is the only runtime that connects to the stdin on plugin launch. All other runtimes used for gauge plugins behave in a nicer way and don't lock out jsonrpc2. Therefore the only change that could be possible would be to configure the node.js runtime to not have this sideeffect, but this isn't possible as far as I am aware off. |
@bockstaller can you bump the gauge version as described in Contributing document please, we can then merge and release with the common change. |
Signed-off-by: Chad Wilson <chadw@thoughtworks.com>
2bc6265
@haroon-sheikh I've done this on his behalf since I had the PR locally anyway - will shepherd the tests and merge shortly. |
Released as |
@chadwilson - not sure I understand the question completely. Which optional plugin feature are we discussing here? |
@sriv Sorry for that. I just meant that I wasn't clear why fixing the issue only required releasing the main gauge (server) with an updated But I infer now that updating the other plugins to use latest If we don't update them now, we may discover unintentional regressions later? |
@bockstaller commented their understanding. I just want to say that this analysis is correct. But also wanted to point out that the use of jsonrpc was something we inherited from the lsp/json-rpc specification. AFAIK the initial lsp ecosystem was jsonrpc over stdio (or maybe we missed the other communication modes). But I do see support for pipes and socket in the [current LSP spec] (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#implementationConsiderations) I reckon this is a potential change that can be done at gauge's end. |
OK, yes, I read his reply, which is why I merged and released :-) Just to be clear - do you have any further concern with the impact of this change? Or particular plugins I can help mitigate risk on by actively updating them to latest gauge-common lib version? Only done |
It's been a while, but if I believe my memory this specific change was done only for debug support in Ruby and that too for So, I am going to bet that this won't have an impact on other plugins. |
Your memory is certainly correct as to the initial motivation so fingers crossed nothing else subsequently relies on those stdin semantics. |
The getgauge/common upgrade solves the issue
where the gauge server crashes whenever a project is loaded that uses the ts plugin.
The cause is described here #2419
This commit closes / permanently fixes issues like
getgauge/gauge-vscode#735 getgauge/gauge-vscode#636 getgauge/gauge-vscode#885