-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
UNAVAILABLE: HTTP/2 error code: NO_ERROR Received Goawaysession_timed_out #5855
Comments
This mainly happens when Google servers are doing things like shutting down or balancing load. It generally has nothing to do with client behavior. |
And do I have something to do about it from my side? |
@amosss, no, there's nothing to be done from your side, other than recognizing in general that RPCs may fail. I'm thinking now this may be a local race. I'm going to try to change the code to give the local race a different error. The error message may also be misreported due to MAX_CONCURRENT_STREAMS. @amosss, how many RPCs might you do concurrently? Over 100? |
I don't think I reached 100 concurrent requests... |
@amosss, okay, it can still be the local race. It's just that you have to get "unlucky" for that. Basically, it requires you to try to send an RPC and that RPC to be between two threads (in a queue) when it's learned a Google server is shutting down. We check that the connection is good before putting it into the queue, and we know the other thread will process the queue quickly, but it may take a small amount of time. |
For completeness, #2562 is the issue for the local race. Keeping this open to change the error message so it is obvious when hitting the local race. |
With this, it will be clear if the RPC failed because the server didn't use a double-GOAWAY or if it failed because of MAX_CONCURRENT_STREAMS or if it was due to a local race. It also fixes the status code to be UNAVAILABLE except for the RPCs included in the GOAWAY error (modulo the Netty bug). Fixes grpc#5855
With this, it will be clear if the RPC failed because the server didn't use a double-GOAWAY or if it failed because of MAX_CONCURRENT_STREAMS or if it was due to a local race. It also fixes the status code to be UNAVAILABLE except for the RPCs included in the GOAWAY error (modulo the Netty bug). Fixes grpc#5855
With this, it will be clear if the RPC failed because the server didn't use a double-GOAWAY or if it failed because of MAX_CONCURRENT_STREAMS or if it was due to a local race. It also fixes the status code to be UNAVAILABLE except for the RPCs included in the GOAWAY error (modulo the Netty bug). Fixes #5855
With this, it will be clear if the RPC failed because the server didn't use a double-GOAWAY or if it failed because of MAX_CONCURRENT_STREAMS or if it was due to a local race. It also fixes the status code to be UNAVAILABLE except for the RPCs included in the GOAWAY error (modulo the Netty bug). Fixes grpc#5855
What version of gRPC are you using?
I have no idea, this is coming from Google Firebase.
What did you expect to see?
No error
This is the callstack:
java.util.concurrent.ExecutionException: com.google.api.gax.rpc.UnavailableException: io.grpc.StatusRuntimeException: UNAVAILABLE: HTTP/2 error code: NO_ERRORReceived Goawaysession_timed_out at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:500) at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:479) at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:76) at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62)
This is my lines of code that triggered this
ApiFuture future = db.collection(collection).document(doc).set(fsData, SetOptions.merge());
future.get();
This is working most of the time, it happened only twice so far so maybe it's something temporary but I have no idea what it is and how to overcome this.
Please advice
The text was updated successfully, but these errors were encountered: