-
Notifications
You must be signed in to change notification settings - Fork 105
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
14 UNAVAILABLE: GOAWAY received #620
Comments
Hello, any news on this? It's still happening every day. Is there anything I can do which would help understanding the issue? |
@AVaksman any thoughts on this one? |
The GOAWAY could be caused by the keepalive settings. If add |
Hello @AVaksman , thanks for the suggestion, I'll add those env variables right away. I'm not sure when I'll be able to post an update on this, as we get those errors really erratically. |
Hello again @AVaksman , sorry if that's a stupid question, but where would the extra logs appear? |
We got similar problem, will try to increase |
@WaldoJeffers 👋 I would expect the detailed logging to show up as Have you been continuing to see these issues over the past couple months? |
Hi! If And if it isn't considered retryable, how can we best handle these errors within |
@bcoe Sorry for the late reply. Yes I can confirm we are still seeing very regularly across all our services, which use different versions of the |
looping in @olavloite as well, who's been doing a lot of work on the library recently. @WaldoJeffers I would definitely suggest you try to get on the latest version of Node.js spanner, if possible, there have been a variety of fixes to |
@WaldoJeffers After some digging and debugging I think I've found the reason for this. It occurs if the backend returns an Note: A streaming RPC in this case basically means any call that executes a SQL statement, as the Spanner client uses the RPC executeStreamingSql for both queries and DML statements. The only exception is the execution of batched DML statements, which uses a separate RPC. |
The streaming call executeStreamingSql is not automatically retried by gax, as the gapic configuration for the call does not specify any error codes that should automatically be retried. Instead, the PartialResultStream is responsible for retrying these calls with the appropriate resume token. Until now, the call was only retried when a valid resume token had been seen for the stream, meaning that if the initial call failed with a retryable error code (e.g. UNAVAILABLE), the stream would fail with this error. This fix ensures that the call is also retried when the error occurs for the initial call or before the stream has returned a valid resume token. Fixes googleapis#620.
The streaming call executeStreamingSql is not automatically retried by gax, as the gapic configuration for the call does not specify any error codes that should automatically be retried. Instead, the PartialResultStream is responsible for retrying these calls with the appropriate resume token. Until now, the call was only retried when a valid resume token had been seen for the stream, meaning that if the initial call failed with a retryable error code (e.g. UNAVAILABLE), the stream would fail with this error. This fix ensures that the call is also retried when the error occurs for the initial call or before the stream has returned a valid resume token. Fixes googleapis#620.
The streaming call executeStreamingSql is not automatically retried by gax, as the gapic configuration for the call does not specify any error codes that should automatically be retried. Instead, the PartialResultStream is responsible for retrying these calls with the appropriate resume token. Until now, the call was only retried when a valid resume token had been seen for the stream, meaning that if the initial call failed with a retryable error code (e.g. UNAVAILABLE), the stream would fail with this error. This fix ensures that the call is also retried when the error occurs for the initial call or before the stream has returned a valid resume token. Fixes googleapis#620.
fix: retry executeStreamingSql when error code is retryable The streaming call executeStreamingSql is not automatically retried by gax, as the gapic configuration for the call does not specify any error codes that should automatically be retried. Instead, the PartialResultStream is responsible for retrying these calls with the appropriate resume token. Until now, the call was only retried when a valid resume token had been seen for the stream, meaning that if the initial call failed with a retryable error code (e.g. UNAVAILABLE), the stream would fail with this error. This fix ensures that the call is also retried when the error occurs for the initial call or before the stream has returned a valid resume token. Fixes #620.
…is#795) fix: retry executeStreamingSql when error code is retryable The streaming call executeStreamingSql is not automatically retried by gax, as the gapic configuration for the call does not specify any error codes that should automatically be retried. Instead, the PartialResultStream is responsible for retrying these calls with the appropriate resume token. Until now, the call was only retried when a valid resume token had been seen for the stream, meaning that if the initial call failed with a retryable error code (e.g. UNAVAILABLE), the stream would fail with this error. This fix ensures that the call is also retried when the error occurs for the initial call or before the stream has returned a valid resume token. Fixes googleapis#620.
Environment details
@google-cloud/spanner
version: 3.1.0Steps to reproduce
It happens 1-5 times a day
The full stacktrace is
Interestingly, we had a very similar error (
13 INTERNAL: GOAWAY
) when using node-spanner v2.x. We were hoping to see this error disappear by upgrading, which it did, but it apparently got replaced by this one ^^It might be related to #234 or to any of these issues https://github.com/grpc/grpc-node/issues?utf8=%E2%9C%93&q=is%3Aissue+GOAWAY+
The text was updated successfully, but these errors were encountered: