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

SubConn transitions directly from CONNECTING to IDLE #7862

Open
zasweq opened this issue Nov 21, 2024 · 1 comment
Open

SubConn transitions directly from CONNECTING to IDLE #7862

zasweq opened this issue Nov 21, 2024 · 1 comment

Comments

@zasweq
Copy link
Contributor

zasweq commented Nov 21, 2024

There is a race when a Subchannel goes from CONNECTING to READY to IDLE that prevents the READY state change notification. We should fix this, as this is causing specific case handling in balancers such as the new pick first leaf policy for DualStack.

@arjan-bal
Copy link
Contributor

The original issue that I opened: #7503

The problem is that the health checking go routine may report a failure before the ready update is sent:

grpc-go/clientconn.go

Lines 1406 to 1412 in b45fc41

if hctx.Err() != nil {
// onClose was already called for this connection, but the connection
// was successfully established first. Consider it a success and set
// the new state to Idle.
ac.updateConnectivityState(connectivity.Idle, nil)
return nil
}

Once we remove health checking from addrConn, the edge case should no longer happen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants