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. #14420

Merged
merged 1 commit into from
Dec 14, 2021

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
    coeuvre committed Dec 14, 2021
    Configuration menu
    Copy the full SHA
    001737c View commit details
    Browse the repository at this point in the history