Skip to content
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
igorbernstein2:custom-chains
Mar 9, 2020
Merged

feat: allow client authors to create their own callable chains#891
igorbernstein2 merged 2 commits intogoogleapis:masterfrom
igorbernstein2:custom-chains

Conversation

@igorbernstein2
Copy link
Copy Markdown
Contributor

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.

@googlebot googlebot added the cla: yes This human has signed the Contributor License Agreement. label Feb 27, 2020
@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 27, 2020

Codecov Report

Merging #891 into master will increase coverage by 0.03%.
The diff coverage is 100%.

Impacted file tree graph

@@             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
Impacted Files Coverage Δ Complexity Δ
...a/com/google/api/gax/grpc/GrpcCallableFactory.java 80.28% <100%> (-2.22%) 9 <0> (-2)
...om/google/api/gax/grpc/GrpcRawCallableFactory.java 100% <100%> (ø) 6 <6> (?)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b81e2e8...d44f50f. Read the comment docs.

Copy link
Copy Markdown
Contributor

@vam-google vam-google left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (please change the header year).

Comment thread gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcRawCallableFactory.java Outdated
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

cla: yes This human has signed the Contributor License Agreement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants