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

[5.x] Remote: Don't blocking-get when acquiring gRPC connections. #14421

Commits on Dec 14, 2021

  1. Remote: Don't blocking-get when acquiring gRPC connections.

    With recent change to limit the max number of gRPC connections by default, acquiring a connection could suspend a thread if there is no available connection.
    
    gRPC calls are scheduled to a dedicated background thread pool. Workers in the thread pool are responsible to acquire the connection before starting the RPC call.
    
    There could be a race condition that a worker thread handles some gRPC calls and then switches to a new call which will acquire new connections. If the number of connections reaches the max, the worker thread is suspended and doesn't have a chance to switch to previous calls. The connections held by previous calls are, hence, never released.
    
    This PR changes to not use blocking get when acquiring gRPC connections.
    
    Fixes bazelbuild#14363.
    
    Closes bazelbuild#14416.
    
    PiperOrigin-RevId: 416282883
    (cherry picked from commit ad663a7)
    coeuvre authored and brentleyjones committed Dec 14, 2021
    Configuration menu
    Copy the full SHA
    bb92044 View commit details
    Browse the repository at this point in the history