Skip to content

Tracking Issue: Concurrent Downloads #18278

Open
@reitermarkus

Description

@reitermarkus

Concurrent Downloads

  • Implement MVP of concurrent downloads for brew fetch.

    Implemented in Implement concurrent downloads in brew fetch. #17756.

  • Improve output logic.

    For simplicity, the output currently only uses at most terminal height - 1 lines due to a trailing newline.

    Implemented in Use full terminal height for concurrent output. #19194.

  • Handle custom download strategies.

    These may not be possible to run concurrently so let's handle them differently.

  • Implement graceful cancellation of downloads.

    Currently, cancelling downloads can only be done by killing the whole thread pool, i.e. the sledgehammer approach. Proper cancellation based on https://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Cancellation.html should be implemented, making it possible to neatly show successful, failed and cancelled downloads.

  • Replace direct puts output with different output formatters for serial/concurrent download output.

  • Implement concurrent downloads for brew install, brew reinstall, brew upgrade etc. with a --concurrency flag.

  • Implement global concurrent downloads with a public/documented/supported HOMEBREW_DOWNLOADS_CONCURRENCY=<int> opt-in variable.

  • Limit concurrent connections per host to avoid overloading smaller (i.e. non-CDN) web servers.

  • Enable concurrent downloads by default, i.e. change default value for --concurrency flag.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featuresNew featureshelp wantedWe want help addressing this

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions