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

Polish for fixes from #223 and #224 #226

Merged
merged 9 commits into from
Oct 17, 2024
Merged

Polish for fixes from #223 and #224 #226

merged 9 commits into from
Oct 17, 2024

Commits on Oct 17, 2024

  1. Configuration menu
    Copy the full SHA
    a4776a3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    38af099 View commit details
    Browse the repository at this point in the history
  3. Run tests with --nocapture in CI

    djc committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    a62d048 View commit details
    Browse the repository at this point in the history
  4. Upgrade actions/checkout to v4

    djc committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    f9f71b2 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    b03e30b View commit details
    Browse the repository at this point in the history
  6. Reap expired connections on drop

    The reaper only runs against the connections in its idle pool. This is
    fine for reaping idle connections, but for hotly contested connections
    beyond their maximum lifetime this can prove problematic.
    
    Consider an active connection beyond its lifetime and a reaper that runs
    every 3 seconds:
    - [t0] Connection is idle
    - [t1] Connection is active
    - [t2] Reaper runs, does not see connection
    - [t3] Connection is idle
    
    This pattern can repeat infinitely with the connection never being reaped.
    
    By checking the max lifetime on drop, we can ensure that expired
    connections are reaped in a reason amount of time (assuming they
    eventually do get dropped).
    tneely authored and djc committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    77ffbc7 View commit details
    Browse the repository at this point in the history
  7. Fix leaky connections

    It's possible to trigger more approvals than are necessary, in turn
    grabbing more connections than we need. This happens when we drop a
    connection. The drop produces a notify, which doesn't get used until the
    pool is empty. The first `Pool::get()` call on an empty pool will spawn
    an connect task, immediately complete `notify.notified().await`, then
    spawn a second connect task. Both will connect and we'll end up with 1
    more connection than we need.
    
    Rather than address the notify issue directly, this fix introduces some
    bookkeeping that tracks the number of open `pool.get()` requests we have
    waiting on connections. If the number of pending connections >= the
    number of pending gets, we will not spawn any additional connect tasks.
    tneely authored and djc committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    4e51e6a View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    9f6629a View commit details
    Browse the repository at this point in the history
  9. Bump bb8 version to 0.8.6

    djc committed Oct 17, 2024
    Configuration menu
    Copy the full SHA
    6a8ad30 View commit details
    Browse the repository at this point in the history