grpc-js: Ref and unref backoff timer #1688
Merged
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.
We want the gRPC library to hold the Node process open if and only if there is an active request. The channel is responsible for this while a call has not yet been assigned to a subchannel, and the subchannel is responsible for this after the call has been assigned, until the call ends. In the subchannel, there is always either an http session, or an active backoff timer (or both). So, we ref both of those as long as the subchannel has at least one call. Since the resolving load balancer is never responsible for keeping the process open, we always unref its backoff timer. The same is true of the xDS client, which always operates as a subordinate of another channel.