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

grpc-js: Fix bugs in pick first LB policy and channel subchannel wrapper #2369

Merged

Conversation

murgatroid99
Copy link
Member

This fixes #2368. The change in #2363 caused the pick first LB policy to own SubchannelWrapper objects as opposed to Subchannel objects for a first time. This triggered a bug that existed since the introduction of subchannel wrappers, where the LB policy would perform an equality test between two subchannel interface objects without handling the case where one is a wrapper. The calls to getRealSubchannel fix that. This bug was not previously triggered because the only previous SubchannelWrapper implementation was for the outlier detection LB policy, and it makes no sense to use that LB policy with pick first.

In addition, testing this also revealed an older bug that has existed since the introduction of SubchannelAddress objects. The LB policy currently performs a naive equality check between two of them, which is always false.

Finally, the ChannelSubchannelWrapper class's subchannel connectivity state listener was written as though calls to addConnectivityStateListener and removeConnectivityStateListener would be intercepted, but they are not, so I removed that code and added code to remove that listener when the wrapper is discarded.

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

Successfully merging this pull request may close these issues.

None yet

3 participants