-
Notifications
You must be signed in to change notification settings - Fork 321
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
Reconnect with engine with exponential backoff #8520
Comments
Refinement notes:
|
Paweł Grabarz reports a new STANDUP for yesterday (2024-03-12): Progress: Working on handling reconnection of whole project manager, cleaned up application entrypoint. It should be finished by 2024-03-12. |
Adam Obuchowicz reports a new 🔴 DELAY for today (2024-04-05): Summary: There is 34 days delay in implementation of the Reconnect with engine with exponential backoff (#8520) task. Delay Cause: The task was investigated by Paweł, and then left aside for a while. |
Adam Obuchowicz reports a new STANDUP for today (2024-04-05): Progress: 4 pages of notifications + some reviews. Then I took the "reconnecting with engine" issue and reproduced problem on my linux - indeed we loose connection and do not restore it (it doesn't refresh page automatically, as on Paweł's Windows). It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. implement reconnecting and test it. |
Adam Obuchowicz reports a new STANDUP for yesterday (2024-04-08): Progress: Tried to find how to react for websocket closing; found one existing implementation of automatically-reconnecting WS, added it to our implementation; it works, but we need also to reinitialize protocol It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. Add automatic protocol re-initialization |
Adam Obuchowicz reports a new STANDUP for today (2024-04-09): Progress: Refactored LanguageServer class to handle initialization automatically. Got stuck at some heavy refactoring in ydocs code: started with merging "exponential backoff" implementation, then migrating all exceptions to Results in ydocs project. It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. Finish refactoring and finally see the reconnecting working. |
Adam Obuchowicz reports a new STANDUP for yesterday (2024-04-10): Progress: Updated rest of code to handle Resuts instead of exceptions. Tested the solution: we reconnect and reinitialize after hibernation, but still more detailed testing is required It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. Test package and hopefully open a PR |
Adam Obuchowicz reports a new STANDUP for today (2024-04-11): Progress: Fixed issues arisen after refactoring; still one remains: a strange behavior on project close (but only on electron) It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. Fix the issue. |
Adam Obuchowicz reports a new STANDUP for today (2024-04-12): Progress: Fix remaining issues and tested with the newest bookclub. Created a PR. Only one problem remains: the data mock seems to not working properly and casing errors in e2e tests. It should be finished by 2024-04-15. Next Day: Next day I will be working on the same task. Fix last isse and apply review comments. |
Adam Obuchowicz reports a new 🔴 DELAY for today (2024-04-16): Summary: There is 4 days delay in implementation of the Reconnect with engine with exponential backoff (#8520) task. I take a bit of margin, as the debugging races is hard and my estimates are unreliable. Delay Cause: My PR triggered some races in E2E tests involving visualization chooser; they are really hard to debug. |
Adam Obuchowicz reports a new STANDUP for today (2024-04-16): Progress: Today investigated the failing E2E tests. Unfortunately, they are a hard nut to crack, as the fails are irregular and mostly happens on release builds. It should be finished by 2024-04-19. Next Day: Next day I will be working on the same task. Finish tests debugging. Or take a break and finish the restoring of Execution Context |
Adam Obuchowicz reports a new STANDUP for yesterday (2024-04-17): Progress: Got review and applied (or answered) all requested changes. Found the way how to manage flacky tests: In one case we wait visualization to actually load (so there's no longer "LoadingVisualization"), in the second we wait until vis is updated to newest expression. Also on this occasion fixed the vis preview not being "proper" JSON visualization, and handle errors when parsing LS responses. It should be finished by 2024-04-19. Next Day: Next day I will be working on the same task. Check why AI checks are failing and the second round of review |
Adam Obuchowicz reports a new STANDUP for today (2024-04-18): Progress: Found why AI tests are failing and fixed them. PR now waits for merge. Fixed some GUI issues with widgets which appeared on James's branch. Also updated Execution Context restoring (deduplicated some code). It should be finished by 2024-04-19. Next Day: Next day I will be working on the #8522 task. Finish the execution context restoring. Test if ydocs server works afterbeing hibernated. If all will be ok, create a PR. |
Fixes #8520 If the websocket is closed not by us, we automatically try to reconnect with it, and initialize the protocol again. **Restoring state (execution contexts, attached visualizations) is not part of this PR**. It's a part of making IDE work after hibernation (or LS crash). # Important Notes It required somewhat heavy refactoring: 1. I decided to use an existing implementation of reconnecting websocket. Replaced (later discovered by me) our implementation. 2. The LanguageServer class now handles both reconnecting and re-initializing - that make usage of it simpler (no more `Promise<LanguageServer>` - each method will just wait for (re)connection and initialization. 3. The stuff in `net` src's module was partially moved to shared's counterpart (with tests). Merged `exponentialBackoff` implementations, which also brought me to 4. Rewriting LS client, so it returns Result instead of throwing, what is closer our desired state, and allows us using exponentialBackoff method without any wrappers.
Add logic for reconnecting with language server (with the same host and port as before) when the connection is closed, without restoring any state to make client working (this will be implemented in #8522 and #8523).
The text was updated successfully, but these errors were encountered: