googleapis / googleapis/google-cloud-java

[java-firestore] No way to access gRpc parameter from Firestore service api to fix deadline exceeded exception(Java)

Open
#13,145 2 comments 0 reactions 1 assignee Claimed by @suraj-qlogic View on GitHub
api: firestore type: question
Dominant language
Java
Stars
2.1k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
154

Description

Hi,

We try to load in a single-transaction batch lots of data into Firestore via the Java api. It works fine with smaller data. But, when the amount to upload to Google Cloud from remote gets large, we get from gRpc a deadline exceeded exception: see stack trace and pom.xml below.

We would like to change the deadline via
response = blockingStub.withDeadlineAfter(deadlineMs,TimeUnit.MILLISECONDS).sayHello(request);
as described in https://grpc.io/blog/deadlines/.

Any other way would do.

We have explored various alternatives:

1. FirestoreOptions.setServiceRpcFactory(serviceRpcFactory)

1. FirestoreOptions.setTransportOptions(transportOptions)

But none seems to lead to access of the gRpc parameters.

So, is there currently no way to change gRpc parameters when using Firestore?

Thanks!
DIdier

======= pom.xml dependencies =======

com.google.cloud
libraries-bom
4.2.0
pom

com.google.cloud
google-cloud-firestore

====== Java stack trace ==============

ava.util.concurrent.ExecutionException: com.google.api.gax.rpc.DeadlineExceededException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49.999563145s. [remote_addr=firestore.googleapis.com/216.58.213.170:443]
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:553)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:534)
at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:86)
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62)
at com.action.inputParser.RawDataInputParser.main(RawDataInputParser.java:412)
Caused by: com.google.api.gax.rpc.DeadlineExceededException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49.999563145s. [remote_addr=firestore.googleapis.com/216.58.213.170:443]
at com.google.api.gax.rpc.ApiExceptionFactory.createException(ApiExceptionFactory.java:51)
at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:72)
at com.google.api.gax.grpc.GrpcApiExceptionFactory.create(GrpcApiExceptionFactory.java:60)
at com.google.api.gax.grpc.GrpcExceptionCallable$ExceptionTransformingFuture.onFailure(GrpcExceptionCallable.java:97)
at com.google.api.core.ApiFutures$1.onFailure(ApiFutures.java:68)
at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1039)
at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30)
at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1165)
at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:958)
at com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:749)
at io.grpc.stub.ClientCalls$GrpcFuture.setException(ClientCalls.java:522)
at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:497)
at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:426)
at io.grpc.internal.ClientCallImpl.access$500(ClientCallImpl.java:66)
at io.grpc.internal.ClientCallImpl$1CloseInContext.runInContext(ClientCallImpl.java:416)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 49.999563145s. [remote_addr=firestore.googleapis.com/216.58.213.170:443]
at io.grpc.Status.asRuntimeException(Status.java:533)
... 13 more

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.