GoogleCloudPlatform / spring-cloud-gcp

New home for Spring Cloud GCP development starting with version 2.0.
Apache License 2.0
399 stars 295 forks source link

Retries (or similar) when accessing secrets from secret manager #2967

Open aarpabe opened 1 month ago

aarpabe commented 1 month ago

Is your feature request related to a problem? Please describe.

We use secret manager in our spring boot production app. From time to time, we get DEADLINE_EXCEEDED errors when accessing a secret. This is usually a short time problem and if we retried, the issue is gone.

We'd like to be able to avoid these errors with a simple declarative approach (without much boilerplate).

Describe the solution you'd like

Describe alternatives you've considered

Additional context

at io.grpc.Status.asRuntimeException ( io/grpc/Status.java:535 ) at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose ( io/grpc.stub/ClientCalls.java:533 ) at io.grpc.internal.ClientCallImpl.closeObserver ( io/grpc.internal/ClientCallImpl.java:553 ) at io.grpc.internal.ClientCallImpl.access$300 ( io/grpc.internal/ClientCallImpl.java:68 ) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal ( io/grpc.internal/ClientCallImpl.java:739 ) at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext ( io/grpc.internal/ClientCallImpl.java:718 ) at io.grpc.internal.ContextRunnable.run ( io/grpc.internal/ContextRunnable.java:37 ) at io.grpc.internal.SerializingExecutor.run ( io/grpc.internal/SerializingExecutor.java:123 ) at java.util.concurrent.Executors$RunnableAdapter.call ( java/util.concurrent/Executors.java:515 ) at java.util.concurrent.FutureTask.run ( java/util.concurrent/FutureTask.java:264 ) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run ( java/util.concurrent/ScheduledThreadPoolExecutor.java:304 ) at java.util.concurrent.ThreadPoolExecutor.runWorker ( java/util.concurrent/ThreadPoolExecutor.java:1128 ) at java.util.concurrent.ThreadPoolExecutor$Worker.run ( java/util.concurrent/ThreadPoolExecutor.java:628 ) at java.lang.Thread.run ( java/lang/Thread.java:829 )