Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository:swift-server/async-http-client
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base:1.30.0
Choose a base ref
...
head repository:swift-server/async-http-client
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare:1.30.1
Choose a head ref
  • 3 commits
  • 10 files changed
  • 2 contributors

Commits on Nov 26, 2025

  1. Don't hold a lock over a continuation in Transaction (#871)

    Motivation: The various 'withMumbleContinuation' APIs are supposed to be invoked synchronously with the caller. This assumption allows a lock to be acquired before the call and released from the body of the 'withMumbleContinuation' after e.g. storing the continuation. However this isn't the case and the job may be re-enqueued on the executor meaning that this is pattern is vulnerable to deadlocks. Modifications: - Drop and reacquire the lock in Transaction Result: Lower chance of deadlock
    @glbrntt
    glbrntt authored Nov 26, 2025
    Configuration menu
    Copy the full SHA
    ce04df0View commit details
    Browse the repository at this point in the history

Commits on Dec 1, 2025

  1. Fix Connection Creation Crash (#873)

    ### Motivation When creating a connection, we wrongfully assumed that `failedToCreateNewConnection` will always be called before `http*ConnectionClosed` in the `HTTPConnectionPoolStateMachine`. However this is far from correct. In NIO Futures are fulfilled before `ChannelHandler` callbacks. Ordering in futures should not be assumed in such a complex project. ### Change We change the `http*ConnectionClosed` methods to be noops, if the connection is in the starting state. We instead wait for the `failedToCreateNewConnection` to create backoff timers and friends. rdar://164674912 --------- Co-authored-by: George Barnett <[email protected]>
    @fabianfett@glbrntt
    fabianfett and glbrntt authored Dec 1, 2025
    Configuration menu
    Copy the full SHA
    3c45dbdView commit details
    Browse the repository at this point in the history
  2. Don't hold a lock over a continuation in test helpers (#872)

    Motivation: The various 'withMumbleContinuation' APIs are supposed to be invoked synchronously with the caller. This assumption allows a lock to be acquired before the call and released from the body of the 'withMumbleContinuation' after e.g. storing the continuation. However this isn't the case and the job may be re-enqueued on the executor meaning that this is pattern is vulnerable to deadlocks. Modifications: - Rework the test helpers to avoid holding a lock when a continuation is created. - Switch to using NIOLockedValue box Result: Lower chance of deadlock
    @glbrntt
    glbrntt authored Dec 1, 2025
    Configuration menu
    Copy the full SHA
    c464bf9View commit details
    Browse the repository at this point in the history
Loading