grpc-js: round_robin: always have children reconnect immediately #2667
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.
This fixes #2666. After #2561, round_robin delegates to pick_first for each endpoint. As a result, it runs into essentially the same problem pick_first had that was fixed in #2619: once a child has a READY->IDLE transition, nothing triggers it to start connecting again. round_robin is supposed to have every child connected or connecting at all times, so the fix is to have the child reconnect immediately after it goes to IDLE.
The test is in the xDS package because that is where the problem was detected, because round_robin is used much more in the xDS context.
Note that this won't impact the channel-level idle timeout, because the channel discards the current LB policy when it goes idle.