-
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
Timeout while fetching Servo’s dependencies on Windows #6125
Comments
Updating the |
Oh dear sounds bad! This is almost for sure caused by #6005 and the restructuring of how we're using curl to download crates. I believe the problem here is that the new strategy is "create a set of a bunch of transfers" and then we finish them (synchronously) one-by-one. While we're finishing a transfer all the other transfers presumably still have their timeout clocks still running, which means once the slow filesystem finishes all the transfers have "timed out". A bug in Cargo's configuration of libcurl! There's a few ways we could solve this:
In any case, I'll try to get this fixed soon! |
Ok I think this should be fixed by #6130 |
This commit fixes rust-lang#6125 by ensuring that while we're extracting tarballs or doing other synchronous work like grabbing file locks we're not letting the timeout timers of each HTTP transfer keep ticking. This is curl's default behavior (which we don't want in this scenario). Instead the timeout logic is inlined directly and we manually account for the synchronous work happening not counting towards timeout limits. Closes rust-lang#6125
Fix timeouts firing while tarballs are extracted This commit fixes #6125 by ensuring that while we're extracting tarballs or doing other synchronous work like grabbing file locks we're not letting the timeout timers of each HTTP transfer keep ticking. This is curl's default behavior (which we don't want in this scenario). Instead the timeout logic is inlined directly and we manually account for the synchronous work happening not counting towards timeout limits. Closes #6125
This commit fixes rust-lang#6125 by ensuring that while we're extracting tarballs or doing other synchronous work like grabbing file locks we're not letting the timeout timers of each HTTP transfer keep ticking. This is curl's default behavior (which we don't want in this scenario). Instead the timeout logic is inlined directly and we manually account for the synchronous work happening not counting towards timeout limits. Closes rust-lang#6125
In servo/servo#21863 I wanted to time
cargo fetch
on Servo with an empty$CARGO_HOME
and see how much #6005 helped. With cargo 1.31.0-nightly (de314a8 2018-09-21), I tried four times but was not able to have it complete.It seemed to spend long stretches of time with the last line of output like:
The filesystem on Windows can be somewhat slow, so if a crate contains many files it’s somewhat expected that extracting can take a while. However, during that time, the number 217 was not changing.
Are all downloads paused while extracting?
At the end, the output looks like:
This was on AWS EC2. IIRC, crates.io is hosted on AWS S3. So I don’t expect that the network was actually that slow. Could it be that an ongoing download is paused while extracting a tarball, causing a timeout?
If so, would it be preferable to have a tarball-extracting thread completely separate from downloads, with an unbounded queue between them?
The text was updated successfully, but these errors were encountered: