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: Always use RetryingCall, always call onCommitted #2884

Merged

Conversation

murgatroid99
Copy link
Member

The main change here is to modify the implementation of the grpc.enable_retries option. Now, when it is set to 0, instead of skipping RetryingCall entirely and making LoadBalancingCall a direct child of ResolvingCall, RetryingCall is used in a new mode that does not perform any retries.

The main purpose of this is to create a place to correctly call CallConfig#onCommitted consistently, whether or not that option is set. Previously, it would only be called in LoadBalancingCall after starting the SubchannelCall. This was both too early (if the call was later retried) and it could fail to be called (if the LB pick failed).

One other change this required was performing the functionality of commitCall even if the underlying call already completed, which means that buffered messages will now be cleared more consistently, and the MessageBufferTracker should track messages cleared this way more consistently.

@murgatroid99 murgatroid99 merged commit 908c22a into grpc:master Jan 15, 2025
9 of 10 checks passed
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.

1 participant