commit | 5d17c755af508b64841e1aed4afdca7bc72f04ab | [log] [tgz] |
---|---|---|
author | Olav Loite <koloite@gmail.com> | Wed Aug 14 10:27:40 2019 +0200 |
committer | Knut Olav Løite <koloite@gmail.com> | Mon Sep 09 09:33:33 2019 +0000 |
tree | a52d8be94824cb7e64565131e10ea25daed1328d | |
parent | 89c7d46d8d41535398abc121239ebdaef70139f6 [diff] |
spanner: Retry "Session not found" for read-only transactions Session not found errors should be retried by taking a new session from the pool and retrying the gRPC call when that is possible. This change fixes this for multi-use read-only transactions when the error occurs on the BeginTransaction call. This method can safely be retried on a new session, as the user has not yet been able to execute any queries on the transaction yet. This is also the most probable moment for a Session not found error to occur for a multi-use read-only transaction. A Session not found error halfway through a read-only multi use transaction could in theory be mitigated by starting a new read-only transaction on a new session with the same read timestamp as the transaction that produced the error, retry the query that returned the error on the new transaction and update the internal transaction reference to ensure any future queries that the user executes on the transaction will use the new transaction. This is not included in this change. Updates #1527. Change-Id: Ibc48e558bf07e8066996c6aaad864c4450abae66 Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/44051 Reviewed-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Go packages for Google Cloud Platform services.
import "cloud.google.com/go"
To install the packages on your system, do not clone the repo. Instead use
$ go get -u cloud.google.com/go/...
NOTE: Some of these packages are under development, and may occasionally make backwards-incompatible changes.
NOTE: Github repo is a mirror of https://code.googlesource.com/gocloud.
Alpha status: the API is still being actively developed. As a result, it might change in backward-incompatible ways and is not recommended for production use.
Beta status: the API is largely complete, but still has outstanding features and bugs to be addressed. There may be minor backwards-incompatible changes where necessary.
Stable status: the API is mature and ready for production use. We will continue addressing bugs and feature requests.
Documentation and examples are available at godoc.org/cloud.google.com/go
We support the two most recent major versions of Go. If Google App Engine uses an older version, we support that as well.
By default, each API will use Google Application Default Credentials for authorization credentials used in calling the API endpoints. This will allow your application to run in many environments without requiring explicit configuration.
client, err := storage.NewClient(ctx)
To authorize using a JSON key file, pass option.WithCredentialsFile
to the NewClient
function of the desired package. For example:
client, err := storage.NewClient(ctx, option.WithCredentialsFile("path/to/keyfile.json"))
You can exert more control over authorization by using the golang.org/x/oauth2
package to create an oauth2.TokenSource
. Then pass option.WithTokenSource
to the NewClient
function: snip:# (auth-ts)
tokenSource := ...
client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource))
Contributions are welcome. Please, see the CONTRIBUTING document for details. We‘re using Gerrit for our code reviews. Please don’t open pull requests against this repo, new pull requests will be automatically closed.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Contributor Code of Conduct for more information.