[WIP] Parallel execution of bootstrapper - #2752
Conversation
|
LINQpad scripts if anyone is interested: https://gist.github.com/vbfox/1085e3c15c849000cdc3df130d7b2997 |
|
ping |
|
Woops, ah yes this PR exists 😉 |
|
still WIP? |
|
Yes I need to fix the tests, i'll get to it, thanks for reminding me it exists :) |
|
Build failures seem unrelated, but as the linux one doesnt want to start I need to test at least on one mono platform. Currently setting up an unbutu VM, wish me luck with mono bugs. |
|
I restarted AppVeyor. I have no fucking idea why they would add a not compatible Also, we now have Which looks a lot like a buffer overflow ;). It could be something you might have broken with this PR as it is a bootstrapper unit test (but it might very well be a mono bug as it looks a lot like it). Maybe you found a security issue ;) |
|
Nah the unit test error is mono writing text files with the byte-order mark... (It's only a test error, I took too much shortcuts in that test) |
|
ready to merge? |
|
All my tests were successful but i'd like someone to double check that everything works :) All of my personal & professional projects have a pinned version of the bootstrapper (Locking versions FTW) so I never saw the original problem before I started testing specifically for it. But the PR itself is finished for me, I tested on mac & linux and it works and bootstrap paket without problems. |
I still need to fix the tests and clean the code a little but it's starting to take shape.
I have LINQPad scripts to test the behavior running lot of parallel bootstrappers downloading from github (By simulating it) and can't make it crash in it's current state.
I wanted to avoid multiple bootstrapper downloading the same version multiple times but turns out that it's harder to do well and not so important.
The core of the change is in
FileSystemProxy.WaitForFileOpenthat is used instead of the standard primitives that fail in such case.