Where is the retrying logic in the Google Cloud Storage go client?

1.1k views Asked by At

Some Google documentation for the go client for Cloud Storage says:

This library supports reading and writing large amounts of data to Cloud Storage, with internal error handling and retries, so you don't have to write your own code to do this.

However, when using the below snippet of code which PUTs an object to Cloud Storage, a 503 Service Unavailable error gets returned to me occasionally.

Where is the logic for retrying Cloud Storage requests located?

    conf, err := google.JWTConfigFromJSON([]byte(apiKey),storage.ScopeFullControl)

    if err != nil {
        panic(err)
    }

    ctx := cloud.NewContext(projectId, conf.Client(oauth2.NoContext))

    writer := storage.NewWriter(self.ctx, Bucket, key)

    _, err := writer.Write(data)
    if err != nil {
        return err
    }
1

There are 1 answers

0
Alvivi On BEST ANSWER

As mentioned by Glenn Lewis on a GCloud issue (20 Feb):

We are working on a ResumableMedia upload in the google-api-go-client library that will simply retry from where it left off in case something failed during transfer. I'm hoping that this should solve the problem, but I don't have a date for you as to when this will be ready because there are continuing design discussions.

Right now there is no reference to ResumableMedia in the source code, so seems that the documentation is wrong. Note that the storage package is experimental.