fix(extensions/#2484): Searching for extensions w/o network crashes Onivim #2551
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue: When searching for extensions without a network connection, the editor would crash with:
Defect: There is a race condition here - we are waiting for
EOF
onstdout
to return the promise - and claim success. However, in the error case, we'd get EOF on stdout, runLwt.wakeup
to complete the promise, and then get a call that the process has exited - and we'd callLwt.wakeup_exn
on the same promise. This triggers an invalid argument exception - we're trying to complete and then fail the same promise.Fix: Wait until both the process has exited, and stdout has given the
EOF
- then we'll complete the promise. At that point, we know if the process was successful or failed, and we could do the appropriate action on the promise.In addition, while debugging this, I saw that parsing was failing frequently when querying
open-vsx
- our parsing code was making the assumption that anicon
field was always available, when that's not the case.Finally, I also added an error message when the search query fails.
Fixes #2484 , and should fix #2545 as well