-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Add --parallel/--no-parallel option to download:plugins #11112
Add --parallel/--no-parallel option to download:plugins #11112
Conversation
2f003c7
to
f8fd03a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your contribution 👍
In order to accept your changes please be sure to sure to sign the eclipse contributor agreement (eca) with the same email as your authorship.
@vince-fugnitto I could have sworn... gimme a moment :) |
hmmmm, I'm failing spectacularly at getting the ECA to validate... |
I do see that there is a valid eca account for your email And your authorship and sign-off match:
So perhaps it's just the tool taking time to update. |
I sent an email to [email protected].. we'll see :) |
f8fd03a
to
a44ad3a
Compare
ECA check fixed... |
The default behaviour is unchanged and is still --parallel, however this change adds --no-parallel or --parallel false as an option to not download every listed plugin in parallel. We are seeing some issues both with ECONNRESET and ZlibBuffer intermittently (probably due to network errors/throttling) This fixes eclipse-theia#11110 Signed-off-by: Morten Engelhardt Olsen <[email protected]>
a44ad3a
to
547e2d8
Compare
For testing, I have locally merged #11113 and this branch at 547e2d8. My test command:
Improvement: This no longer silently ignores extensions for which no compatible version can be found, but throws:
Which is actually true: The earliest version has Therefore I have added The bad news: I still get lots of parallel connections and
Network traffic continues long after that, and even after network traffic has ended, Worse: After manually aborting, the My workaround for the v1.25.0 release was to replace the extension pack with an explicit list in So, no success yet, but improvement in error checking. |
@ccorn I'm not sure I follow, the behavior should be the following:
If you were to abort before the resolvement of the
As I mentioned previously, the |
Just tried it again, with #11113 but without this merge request. This time it's a
And I do have to abort again, but without #11112 at least some of the bundled plugins show up after the abort. With 547e2d8, none show up.
That is the point: Resolving extension packs uses another code path and/or a new scale of connection parallelism which turns out to be problematic. Well, even the usual downloading of |
More experimenting: I have listed all bundled plugins explicitly in No. Both without and with this merge request (547e2d8), the steps logged as Without 547e2d8, many (but not all) messages like |
So, I don't have a problem by just blindly doing the talking to open-vsx in serial... let me add a commit you can try for that... |
To not send all the search requests against OVSX in one big promise, just resolve them slowly one-by-one. The download itself is still heeding the --parallel/--no-parallel setting. Signed-off-by: Morten Engelhardt Olsen <[email protected]>
Thanks, I will try it! But be prepared for feedback delays measured in hours, in case your changes succeed in making the |
OK, I locally merged #11112 (8b22b76) with #11113 (51a7899), and Not only did it succeed, but it did so within under 30 minutes. I solemnly declare that this fix works for me. (Of course, the gross amount of data transferred for version-checking is still good material for a precious rant, but not within the scope of this pull request.) |
I'd encourage taking the rant to the Open VSX repository, since it seems that they have structured their responses to include such a massive amount of redundant information. |
yeah, that's for OpenVSX :) However it does look like doing the queries against OpenVSX in parallel does not really gain much w.r.t time, so I don't actually see much issue doing this resolving stage in serial... Not sure if you have any differing opinion, @colin-grant-work / @vince-fugnitto ? |
No, I agree - if the user chooses to do things serially, we should try to do everything that we can serially, including the queries to Open VSX about versions. |
This plugin does not have a download url, which is now an error where it before was a warning.
But what if he chooses parallel... In my mind resolving this could also go in serial then just to make the code easier to follow, and I at least see no speed improvement in the async version of the queries... Granted I don't have a setup with a whole lot of extension packs but... |
@vince-fugnitto / @colin-grant-work do you guys think more is needed on this PR? |
@xoriath, apologies for the delay. I've been slowly chewing on the question of whether to run the Open VSX requests in parallel or sequence. Let me take another look this afternoon and I'll get back to you. |
No rush, @colin-grant-work , I've just pondered and ended up that changing the queries back to parallel (or make them actually heed the new switch) is... a bit more meh... So at least in my mind I would like to put this in and see if we alleviate the issues that we have. If resolving against open-vsx is too slow, then deal with that in round 2. However it looks like eclipse/openvsx#379 is discussing the data response format in itself. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This appears to be working as promised. 👍 If necessary, we can modify the VSX calls to occur in sequence as well separately.
The latest commit (f1f66c1) in this PR, while needed for testing, would be duplicating part of #11113, so I think you should merge 8b22b76 instead or update #11113 accordingly. I also think it is useful to keep the two essential commits ( |
…)" This reverts commit 8ba808a.
I think we should either fix the implementation or revert the commit for now since we only respect the |
I've put up #11201 which respects parallel / no-parallel for all parts of the download process. |
@colin-grant-work: Shouldn't the revert take place on the master branch? To me this looks as if the master branch has the changes, whereas this PR branch has them reverted, and I suppose it should be the other way around. |
My PR is not a reversion of this PR - just an adjustment. In particular, this PR made it so that all plugin version information was resolved before any plugins were downloaded. That didn't change the logic, but it did mean that there was no visible feedback for a long period while calls to Open VSX were made to determine the versions to be downloaded. My PR changes that sequence so that for each plugin, we determine the version, then download it, ensuring that we get some feedback for each plugin as we go and avoiding the impression of long hang. |
The default behaviour is unchanged and is still --parallel,
however this change adds --no-parallel or --parallel false
as an option to not download every listed plugin in parallel.
We are seeing some issues both with ECONNRESET and ZlibBuffer
intermittently (probably due to network errors/throttling)
This fixes #11110
Signed-off-by: Morten Engelhardt Olsen [email protected]
What it does
Add new argument --parallel (default: true) which will either download plugins in serial or in parallel
How to test
There is no real user visible changes, the only difference is how quickly the target folder is created and the plugins extracted (parallel vs serial)
Review checklist
Reminder for reviewers