Skip to content
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

fix(publish): Block until it is in index #11062

Merged
merged 4 commits into from Oct 27, 2022
Merged

fix(publish): Block until it is in index #11062

merged 4 commits into from Oct 27, 2022

Commits on Oct 10, 2022

  1. Configuration menu
    Copy the full SHA
    8995e84 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    33ba607 View commit details
    Browse the repository at this point in the history

Commits on Oct 11, 2022

  1. Configuration menu
    Copy the full SHA
    487d7e5 View commit details
    Browse the repository at this point in the history

Commits on Oct 13, 2022

  1. fix(publish): Block until it is in index

    Originally, crates.io would block on publish requests until the publish
    was complete, giving `cargo publish` this behavior by extension.  When
    crates.io switched to asynchronous publishing, this intermittently broke
    people's workflows when publishing multiple crates.  I say interittent
    because it usually works until it doesn't and it is unclear why to the
    end user because it will be published by the time they check.  In the
    end, callers tend to either put in timeouts (and pray), poll the
    server's API, or use `crates-index` crate to poll the index.
    
    This isn't sufficient because
    - For any new interested party, this is a pit of failure they'll fall
      into
    - crates-index has re-implemented index support incorrectly in the past,
      currently doesn't handle auth, doesn't support `git-cli`, etc.
    - None of these previous options work if we were to implement
      workspace-publish support (rust-lang#1169)
    - The new sparse registry might increase the publish times, making the
      delay easier to hit manually
    - The new sparse registry goes through CDNs so checking the server's API
      might not be sufficient
    - Once the sparse registry is available, crates-index users will find
      out when the package is ready in git but it might not be ready through
      the sparse registry because of CDNs
    
    So now `cargo` will block until it sees the package in the index.
    - This is checking via the index instead of server APIs in case there
      are propagation delays.  This has the side effect of being noisy
      because of all of the "Updating index" messages.
    - This is done unconditionally because cargo used to block and that
      didn't seem to be a problem, blocking by default is the less error
      prone case, and there doesn't seem to be enough justification for a
      "don't block" flag.
    
    The timeout was 5min but I dropped it to 1m.  Unfortunately, I don't
    have data from `cargo-release` to know what a reasonable timeout is, so
    going ahead and dropping to 60s and assuming anything more is an outage.
    
    Fixes rust-lang#9507
    epage committed Oct 13, 2022
    Configuration menu
    Copy the full SHA
    f2fc5ca View commit details
    Browse the repository at this point in the history