This repository was archived by the owner on Sep 26, 2023. It is now read-only.
feat: allow client authors to create their own callable chains#891
Merged
igorbernstein2 merged 2 commits intogoogleapis:masterfrom Mar 9, 2020
Merged
feat: allow client authors to create their own callable chains#891igorbernstein2 merged 2 commits intogoogleapis:masterfrom
igorbernstein2 merged 2 commits intogoogleapis:masterfrom
Conversation
Codecov Report
@@ Coverage Diff @@
## master #891 +/- ##
============================================
+ Coverage 78.63% 78.66% +0.03%
- Complexity 1163 1167 +4
============================================
Files 203 204 +1
Lines 5143 5152 +9
Branches 413 413
============================================
+ Hits 4044 4053 +9
Misses 925 925
Partials 174 174
Continue to review full report at Codecov.
|
vam-google
approved these changes
Feb 28, 2020
Contributor
vam-google
left a comment
There was a problem hiding this comment.
LGTM (please change the header year).
6ae0aa5 to
d44f50f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
It seems like gapic generated clients provide a partial solution for client authors wishing to have more control over their callable chains. Generated Grpc*Stubs take an instance of GrpcStubCallableFactory. The default generated GrpcCallableFactory simply delegates to gax's GrpcStubCallableFactory. It seems like the intention was to allow client authors to inject their own implementation of the factory to change how callable chains are constructed.
This functionality would be very useful for the Cloud Bigtable client for methods like ReadRows, which need to perform some custom logic before the RetryCallable. Unfortunately, it's currently impossible to use this functionality because core Callables like GrpcDirectCallables, GrpcExceptionCallables and Grpc*RequestParamCallables are package private. Which would require a client author to re-write those callables.
This PR improves the situation by introducing a
GrpcRawCallableFactory, that is capable of constructing minimal chains solely composed of the package private bits. These short chains can then be extended as needed.