-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
bigquery/storage/managedwriter: custom gax.Retryer #5094
Comments
Besides this feature request I was also wondering how realistic is for this managed writer to become a production-ready part of the storage API, as currently it is still marked as experimental. |
Thanks for filing this issue. Retries is something that's still not fully complete in the veneer, so I'll keep this in mind when extending it. The primary reason that the managedwriter package is still marked experimental is that I'm still not satisfied that the call signatures are final; once that's done we can promote the package. For example, #5078 added call option support and was a breaking change from the perspective of existing signatures last week. |
Ok super, thanks! If you need help or contributions please do ask :) |
@shollyman I believe this issue does deserve a high priority, but I guess (P1) is what that means? I was under the impression that you couldn't quickly run in a situation where you could retry forever, but apparently an error such as:
which you can very easily get if you mismatch your proto model with the used table's BQ model, Having the default |
@shollyman, shall I make a PR for this as my first code contribution to the BigQuery Go API? Or is this something you want to discuss further first? |
and also use the ManagedStreamer's call options for the append rows call resolves googleapis#5094
and also use the ManagedStreamer's call options for the append rows call Refs: googleapis#5094
…gedwriter and also use the ManagedStreamer's call options for the append rows call Refs: googleapis#5094
Starting to get back to this, thanks for putting together than initial PR. Some thoughts:
|
Given point (3) @shollyman , I suspect that for now this PR can remain stale, as we might not want to extend/modify the API regarding this until it is clear on what is needed for this? Can you share some examples on where a more stateful approach is needed for so called advanced scenarios? |
Is your feature request related to a problem? Please describe.
The BQ ManagedWriter for the Storage API uses a
gax.Retryer
under the hood.It does so for 2 purposes:
In both cases it is not possible for me to define what Retryer to use. This means that I cannot define
my own conditions to retry. One severe consequence is that currently it is not possible to put a maximum deadline for the
back-off algorithm, and so in theory this can block forever.
Describe the solution you'd like
Be able to define my own retryer. For the AppendRows command this could be as obvious as allowing us to define
gax.CallOptions
s ourselves. This solution wouldn't allow us to define what to do for the re(connect) use-case though. So either the latter is handled separately with an initial config, or the initial config is to be used for both use cases.Describe alternatives you've considered
but feels a lot like reinventing the wheel to me;
it could be retrying forever;
Extra
Here is the code of the retryer I developed myself and use in my forked ManagedWriter.
Note that I am not an expert in either GRPC or the google cloud Go API. I wrote this Retryer
based on some short experience with it as well as the documentation sources.
The text was updated successfully, but these errors were encountered: