rls: delegate pick to child policy as long as it is not in TransientFailure #5656
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Recently, we implemented a no-op
ExitIdle
method for the ringhash LB policy in #5614.When RLS is used in conjunction with ringhash though, this causes the channel to never come out of
IDLE
, as ringhash starts inIDLE
and any requests to exit idle from its parent results in a no-op.The pick behavior in RLS though seems to be the root cause. Instead of delegating the picks to child policies which are not in
TransientFailure
, RLS was asking them to exit idle if they were inIDLE
. This is in contrast to how things are implemented in c-core, which simply delegates the picks to the child policies as long as they are not inTransientFailure
, and for a policy likeringhash
, the pick ensures that it exits idle.RELEASE NOTES:
IDLE