From 09de13bbfadcf3b32058b2132266f66405fbfa78 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 17 Nov 2020 07:16:03 -0800 Subject: [PATCH 01/15] feat(all): auto-regenerate gapics (#3217) This is an auto-generated regeneration of the gapic clients by cloud.google.com/go/internal/gapicgen. Once the corresponding genproto PR is submitted, genbot will update this PR with a newer dependency to the newer version of genproto and assign reviewers to this PR. If you have been assigned to review this PR, please: - Ensure that the version of genproto in go.mod has been updated. - Ensure that CI is passing. If it's failing, it requires your manual attention. - Approve and submit this PR if you believe it's ready to ship. Corresponding genproto PR: https://github.com/googleapis/go-genproto/pull/495 --- accessapproval/apiv1/doc.go | 2 +- analytics/admin/apiv1alpha/doc.go | 2 +- analytics/data/apiv1alpha/doc.go | 2 +- area120/tables/apiv1alpha1/doc.go | 2 +- asset/apiv1/doc.go | 2 +- asset/apiv1beta1/doc.go | 2 +- asset/apiv1p2beta1/doc.go | 2 +- asset/apiv1p5beta1/doc.go | 2 +- assuredworkloads/apiv1beta1/doc.go | 2 +- automl/apiv1/doc.go | 2 +- automl/apiv1beta1/doc.go | 2 +- bigquery/connection/apiv1/doc.go | 2 +- bigquery/connection/apiv1beta1/doc.go | 2 +- bigquery/datatransfer/apiv1/doc.go | 2 +- bigquery/go.mod | 4 ++-- bigquery/go.sum | 8 ++++---- bigquery/reservation/apiv1/doc.go | 2 +- bigquery/reservation/apiv1beta1/doc.go | 2 +- bigquery/storage/apiv1/doc.go | 2 +- bigquery/storage/apiv1alpha2/doc.go | 2 +- bigquery/storage/apiv1beta1/doc.go | 2 +- bigquery/storage/apiv1beta2/doc.go | 2 +- bigtable/go.mod | 4 ++-- bigtable/go.sum | 8 ++++---- billing/apiv1/doc.go | 2 +- billing/budgets/apiv1/doc.go | 2 +- billing/budgets/apiv1beta1/doc.go | 2 +- cloudbuild/apiv1/v2/doc.go | 2 +- cloudtasks/apiv2/doc.go | 2 +- cloudtasks/apiv2beta2/doc.go | 2 +- cloudtasks/apiv2beta3/doc.go | 2 +- container/apiv1/doc.go | 2 +- containeranalysis/apiv1beta1/doc.go | 2 +- datacatalog/apiv1/doc.go | 2 +- datacatalog/apiv1beta1/doc.go | 2 +- dataproc/apiv1/doc.go | 2 +- dataproc/apiv1beta2/doc.go | 2 +- datastore/admin/apiv1/doc.go | 2 +- datastore/go.mod | 4 ++-- datastore/go.sum | 8 ++++---- debugger/apiv2/doc.go | 2 +- dialogflow/apiv2/doc.go | 2 +- dialogflow/cx/apiv3beta1/doc.go | 2 +- dlp/apiv2/doc.go | 2 +- errorreporting/apiv1beta1/doc.go | 2 +- firestore/apiv1/admin/doc.go | 2 +- firestore/apiv1/doc.go | 2 +- firestore/go.mod | 4 ++-- firestore/go.sum | 8 ++++---- functions/apiv1/doc.go | 2 +- gaming/apiv1/doc.go | 2 +- gaming/apiv1beta/doc.go | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- iam/credentials/apiv1/doc.go | 2 +- internal/examples/fake/go.mod | 2 +- internal/examples/fake/go.sum | 4 ++-- internal/examples/mock/go.mod | 2 +- internal/examples/mock/go.sum | 4 ++-- internal/godocfx/go.mod | 2 +- internal/godocfx/go.sum | 8 ++++---- iot/apiv1/doc.go | 2 +- kms/apiv1/doc.go | 2 +- language/apiv1/doc.go | 2 +- language/apiv1beta2/doc.go | 2 +- logging/apiv2/doc.go | 2 +- logging/go.mod | 4 ++-- logging/go.sum | 8 ++++---- longrunning/autogen/doc.go | 2 +- managedidentities/apiv1/doc.go | 2 +- memcache/apiv1beta2/doc.go | 2 +- monitoring/apiv3/v2/doc.go | 2 +- monitoring/dashboard/apiv1/doc.go | 2 +- notebooks/apiv1beta1/doc.go | 2 +- osconfig/agentendpoint/apiv1/doc.go | 2 +- osconfig/agentendpoint/apiv1beta/doc.go | 2 +- osconfig/apiv1/doc.go | 2 +- osconfig/apiv1beta/doc.go | 2 +- oslogin/apiv1/doc.go | 2 +- oslogin/apiv1beta/doc.go | 2 +- phishingprotection/apiv1beta1/doc.go | 2 +- policytroubleshooter/apiv1/doc.go | 2 +- pubsub/apiv1/doc.go | 2 +- pubsub/go.mod | 4 ++-- pubsub/go.sum | 8 ++++---- pubsublite/apiv1/doc.go | 2 +- pubsublite/go.mod | 4 ++-- pubsublite/go.sum | 8 ++++---- recaptchaenterprise/apiv1/doc.go | 2 +- recaptchaenterprise/apiv1beta1/doc.go | 2 +- recommender/apiv1/doc.go | 2 +- recommender/apiv1beta1/doc.go | 2 +- redis/apiv1/doc.go | 2 +- redis/apiv1beta1/doc.go | 2 +- scheduler/apiv1/doc.go | 2 +- scheduler/apiv1beta1/doc.go | 2 +- secretmanager/apiv1/doc.go | 2 +- secretmanager/apiv1beta1/doc.go | 2 +- security/privateca/apiv1beta1/doc.go | 2 +- securitycenter/apiv1/doc.go | 2 +- securitycenter/apiv1beta1/doc.go | 2 +- securitycenter/apiv1p1beta1/doc.go | 2 +- securitycenter/settings/apiv1beta1/doc.go | 2 +- servicedirectory/apiv1beta1/doc.go | 2 +- spanner/admin/database/apiv1/doc.go | 2 +- spanner/admin/instance/apiv1/doc.go | 2 +- spanner/apiv1/doc.go | 2 +- spanner/go.mod | 4 ++-- spanner/go.sum | 8 ++++---- speech/apiv1/doc.go | 2 +- speech/apiv1p1beta1/doc.go | 2 +- storage/go.mod | 4 ++-- storage/go.sum | 8 ++++---- talent/apiv4/doc.go | 2 +- talent/apiv4beta1/doc.go | 2 +- texttospeech/apiv1/doc.go | 2 +- trace/apiv1/doc.go | 2 +- trace/apiv2/doc.go | 2 +- translate/apiv3/doc.go | 2 +- video/transcoder/apiv1beta1/doc.go | 2 +- videointelligence/apiv1/doc.go | 2 +- videointelligence/apiv1beta2/doc.go | 2 +- vision/apiv1/doc.go | 2 +- vision/apiv1p1beta1/doc.go | 2 +- webrisk/apiv1/doc.go | 2 +- webrisk/apiv1beta1/doc.go | 2 +- websecurityscanner/apiv1/doc.go | 2 +- workflows/apiv1beta/doc.go | 2 +- workflows/executions/apiv1beta/doc.go | 2 +- 129 files changed, 174 insertions(+), 174 deletions(-) diff --git a/accessapproval/apiv1/doc.go b/accessapproval/apiv1/doc.go index 66fe9f53dda..c48a786e168 100644 --- a/accessapproval/apiv1/doc.go +++ b/accessapproval/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/analytics/admin/apiv1alpha/doc.go b/analytics/admin/apiv1alpha/doc.go index 80814f751c3..b1b1b68b236 100644 --- a/analytics/admin/apiv1alpha/doc.go +++ b/analytics/admin/apiv1alpha/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/analytics/data/apiv1alpha/doc.go b/analytics/data/apiv1alpha/doc.go index 117c493a8c8..f0ed3a15b5f 100644 --- a/analytics/data/apiv1alpha/doc.go +++ b/analytics/data/apiv1alpha/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/area120/tables/apiv1alpha1/doc.go b/area120/tables/apiv1alpha1/doc.go index dcbeb5c3353..983f2b5158c 100644 --- a/area120/tables/apiv1alpha1/doc.go +++ b/area120/tables/apiv1alpha1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1/doc.go b/asset/apiv1/doc.go index c2b9b047d10..b4276181139 100644 --- a/asset/apiv1/doc.go +++ b/asset/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1beta1/doc.go b/asset/apiv1beta1/doc.go index 0df29c45970..2164f0c4734 100644 --- a/asset/apiv1beta1/doc.go +++ b/asset/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1p2beta1/doc.go b/asset/apiv1p2beta1/doc.go index 83a98c8e301..8d125657d69 100644 --- a/asset/apiv1p2beta1/doc.go +++ b/asset/apiv1p2beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1p5beta1/doc.go b/asset/apiv1p5beta1/doc.go index 1ae71f68c03..810143a7a86 100644 --- a/asset/apiv1p5beta1/doc.go +++ b/asset/apiv1p5beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/assuredworkloads/apiv1beta1/doc.go b/assuredworkloads/apiv1beta1/doc.go index 97963bdb634..8d10a752f78 100644 --- a/assuredworkloads/apiv1beta1/doc.go +++ b/assuredworkloads/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/automl/apiv1/doc.go b/automl/apiv1/doc.go index f74cb9745e3..5c3d9d67ff8 100644 --- a/automl/apiv1/doc.go +++ b/automl/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/automl/apiv1beta1/doc.go b/automl/apiv1beta1/doc.go index 158d17e9f1b..47b1b7709d4 100644 --- a/automl/apiv1beta1/doc.go +++ b/automl/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/connection/apiv1/doc.go b/bigquery/connection/apiv1/doc.go index c09ee35ffdd..f1041d39c9c 100644 --- a/bigquery/connection/apiv1/doc.go +++ b/bigquery/connection/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/connection/apiv1beta1/doc.go b/bigquery/connection/apiv1beta1/doc.go index 0d642165f78..5914d32f92f 100644 --- a/bigquery/connection/apiv1beta1/doc.go +++ b/bigquery/connection/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/datatransfer/apiv1/doc.go b/bigquery/datatransfer/apiv1/doc.go index eb7bb26a909..966cbbd3e11 100644 --- a/bigquery/datatransfer/apiv1/doc.go +++ b/bigquery/datatransfer/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/go.mod b/bigquery/go.mod index ed008700d6e..875e542a630 100644 --- a/bigquery/go.mod +++ b/bigquery/go.mod @@ -8,8 +8,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/bigquery/go.sum b/bigquery/go.sum index f0a30c8ea95..bb7d2cd5755 100644 --- a/bigquery/go.sum +++ b/bigquery/go.sum @@ -398,8 +398,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -491,8 +491,8 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= diff --git a/bigquery/reservation/apiv1/doc.go b/bigquery/reservation/apiv1/doc.go index cd4226498d4..5d94f650ad8 100644 --- a/bigquery/reservation/apiv1/doc.go +++ b/bigquery/reservation/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/reservation/apiv1beta1/doc.go b/bigquery/reservation/apiv1beta1/doc.go index c96b322f05e..efc2ceaea25 100644 --- a/bigquery/reservation/apiv1beta1/doc.go +++ b/bigquery/reservation/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1/doc.go b/bigquery/storage/apiv1/doc.go index 6be95791754..841d44f04fa 100644 --- a/bigquery/storage/apiv1/doc.go +++ b/bigquery/storage/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1alpha2/doc.go b/bigquery/storage/apiv1alpha2/doc.go index adcc0496ddd..c352217e953 100644 --- a/bigquery/storage/apiv1alpha2/doc.go +++ b/bigquery/storage/apiv1alpha2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1beta1/doc.go b/bigquery/storage/apiv1beta1/doc.go index 81317447edf..9146738e38f 100644 --- a/bigquery/storage/apiv1beta1/doc.go +++ b/bigquery/storage/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1beta2/doc.go b/bigquery/storage/apiv1beta2/doc.go index 570f3dd8647..6c3a7d267b2 100644 --- a/bigquery/storage/apiv1beta2/doc.go +++ b/bigquery/storage/apiv1beta2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigtable/go.mod b/bigtable/go.mod index 8056d6ba57c..4e933f7e04b 100644 --- a/bigtable/go.mod +++ b/bigtable/go.mod @@ -9,9 +9,9 @@ require ( github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 rsc.io/binaryregexp v0.2.0 ) diff --git a/bigtable/go.sum b/bigtable/go.sum index 1a1d7039ecc..ae2c158223d 100644 --- a/bigtable/go.sum +++ b/bigtable/go.sum @@ -406,8 +406,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -503,8 +503,8 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= diff --git a/billing/apiv1/doc.go b/billing/apiv1/doc.go index c6e9bab17e8..b1d0fb35729 100644 --- a/billing/apiv1/doc.go +++ b/billing/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/billing/budgets/apiv1/doc.go b/billing/budgets/apiv1/doc.go index 813ed4e188b..a9494438e2f 100644 --- a/billing/budgets/apiv1/doc.go +++ b/billing/budgets/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/billing/budgets/apiv1beta1/doc.go b/billing/budgets/apiv1beta1/doc.go index 4cc3615b2b8..6d6a4a402a7 100644 --- a/billing/budgets/apiv1beta1/doc.go +++ b/billing/budgets/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudbuild/apiv1/v2/doc.go b/cloudbuild/apiv1/v2/doc.go index e8f2cd3794e..5544d3bdf29 100644 --- a/cloudbuild/apiv1/v2/doc.go +++ b/cloudbuild/apiv1/v2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2/doc.go b/cloudtasks/apiv2/doc.go index 6aabf8cca99..73596fe8a0b 100644 --- a/cloudtasks/apiv2/doc.go +++ b/cloudtasks/apiv2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2beta2/doc.go b/cloudtasks/apiv2beta2/doc.go index e0105cfc24c..ca91a3ba953 100644 --- a/cloudtasks/apiv2beta2/doc.go +++ b/cloudtasks/apiv2beta2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2beta3/doc.go b/cloudtasks/apiv2beta3/doc.go index 6b87d961536..79ed38aa6c9 100644 --- a/cloudtasks/apiv2beta3/doc.go +++ b/cloudtasks/apiv2beta3/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/container/apiv1/doc.go b/container/apiv1/doc.go index 0b8f4e611d7..fddbf232a67 100644 --- a/container/apiv1/doc.go +++ b/container/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/containeranalysis/apiv1beta1/doc.go b/containeranalysis/apiv1beta1/doc.go index faf6c77ff26..fad61b218d2 100644 --- a/containeranalysis/apiv1beta1/doc.go +++ b/containeranalysis/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datacatalog/apiv1/doc.go b/datacatalog/apiv1/doc.go index 6df34dfeb66..8b9de2d08bd 100644 --- a/datacatalog/apiv1/doc.go +++ b/datacatalog/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datacatalog/apiv1beta1/doc.go b/datacatalog/apiv1beta1/doc.go index 0bbfe2e2be4..e5631ed2e30 100644 --- a/datacatalog/apiv1beta1/doc.go +++ b/datacatalog/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dataproc/apiv1/doc.go b/dataproc/apiv1/doc.go index 8627184e53f..9247ce66ab5 100644 --- a/dataproc/apiv1/doc.go +++ b/dataproc/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dataproc/apiv1beta2/doc.go b/dataproc/apiv1beta2/doc.go index 1033e5cb50e..5fb700f25f4 100644 --- a/dataproc/apiv1beta2/doc.go +++ b/dataproc/apiv1beta2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datastore/admin/apiv1/doc.go b/datastore/admin/apiv1/doc.go index 003336f7b46..360f7a21d4b 100644 --- a/datastore/admin/apiv1/doc.go +++ b/datastore/admin/apiv1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datastore/go.mod b/datastore/go.mod index 07cbefe1c1e..08dbdae9b48 100644 --- a/datastore/go.mod +++ b/datastore/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/datastore/go.sum b/datastore/go.sum index f25f292e4aa..050244c4f05 100644 --- a/datastore/go.sum +++ b/datastore/go.sum @@ -401,8 +401,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -497,8 +497,8 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/debugger/apiv2/doc.go b/debugger/apiv2/doc.go index 3bb8168a677..6947235b468 100644 --- a/debugger/apiv2/doc.go +++ b/debugger/apiv2/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dialogflow/apiv2/doc.go b/dialogflow/apiv2/doc.go index a3ff0c2c8ee..4d2c0f6de22 100644 --- a/dialogflow/apiv2/doc.go +++ b/dialogflow/apiv2/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dialogflow/cx/apiv3beta1/doc.go b/dialogflow/cx/apiv3beta1/doc.go index 9b0aa288b69..fd0d3cf7545 100644 --- a/dialogflow/cx/apiv3beta1/doc.go +++ b/dialogflow/cx/apiv3beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dlp/apiv2/doc.go b/dlp/apiv2/doc.go index 184458211b1..0a6c951c70e 100644 --- a/dlp/apiv2/doc.go +++ b/dlp/apiv2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/errorreporting/apiv1beta1/doc.go b/errorreporting/apiv1beta1/doc.go index cb5460644b0..e27a7cd90d7 100644 --- a/errorreporting/apiv1beta1/doc.go +++ b/errorreporting/apiv1beta1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/apiv1/admin/doc.go b/firestore/apiv1/admin/doc.go index 46516ad277b..ea42b0ce27c 100644 --- a/firestore/apiv1/admin/doc.go +++ b/firestore/apiv1/admin/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/apiv1/doc.go b/firestore/apiv1/doc.go index 43846d58556..835350685d4 100644 --- a/firestore/apiv1/doc.go +++ b/firestore/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/go.mod b/firestore/go.mod index 6b7917b5e12..d2594216a6d 100644 --- a/firestore/go.mod +++ b/firestore/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/firestore/go.sum b/firestore/go.sum index 1fa1a4f4fff..da83d14d19d 100644 --- a/firestore/go.sum +++ b/firestore/go.sum @@ -403,8 +403,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -468,8 +468,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/functions/apiv1/doc.go b/functions/apiv1/doc.go index 082d9a92f0a..f4aceb6d71b 100644 --- a/functions/apiv1/doc.go +++ b/functions/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/gaming/apiv1/doc.go b/gaming/apiv1/doc.go index 10f5379edd6..939af3c2eaf 100644 --- a/gaming/apiv1/doc.go +++ b/gaming/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/gaming/apiv1beta/doc.go b/gaming/apiv1beta/doc.go index 613a147ff51..ec8ae4c309c 100644 --- a/gaming/apiv1beta/doc.go +++ b/gaming/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/go.mod b/go.mod index ba936d94b13..5c717467508 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,8 @@ require ( golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 golang.org/x/text v0.3.4 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index 12cc94e2c11..e4500b2fd91 100644 --- a/go.sum +++ b/go.sum @@ -393,8 +393,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -476,8 +476,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c h1:Lq4llNryJoaVFRm google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= diff --git a/iam/credentials/apiv1/doc.go b/iam/credentials/apiv1/doc.go index 73443240e50..90d56d22ac8 100644 --- a/iam/credentials/apiv1/doc.go +++ b/iam/credentials/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/internal/examples/fake/go.mod b/internal/examples/fake/go.mod index e4a94ef3408..57bb3237258 100644 --- a/internal/examples/fake/go.mod +++ b/internal/examples/fake/go.mod @@ -7,6 +7,6 @@ require ( github.com/golang/protobuf v1.4.3 // indirect golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.32.0 ) diff --git a/internal/examples/fake/go.sum b/internal/examples/fake/go.sum index d51a7d395c2..3a88d01246a 100644 --- a/internal/examples/fake/go.sum +++ b/internal/examples/fake/go.sum @@ -353,8 +353,8 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201002142447-3860012362da h1:DTQYk4u7nICKkkVZsBv0/0po0ChISxAJ5CTAfUhO0PQ= google.golang.org/genproto v0.0.0-20201002142447-3860012362da/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/internal/examples/mock/go.mod b/internal/examples/mock/go.mod index 74c76b3442f..a4149ded855 100644 --- a/internal/examples/mock/go.mod +++ b/internal/examples/mock/go.mod @@ -8,7 +8,7 @@ require ( github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.31.1 // indirect google.golang.org/protobuf v1.25.0 // indirect ) diff --git a/internal/examples/mock/go.sum b/internal/examples/mock/go.sum index ad6ef0fd003..9ae7d1382a5 100644 --- a/internal/examples/mock/go.sum +++ b/internal/examples/mock/go.sum @@ -76,8 +76,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/internal/godocfx/go.mod b/internal/godocfx/go.mod index 3dc625f5610..6d080a97e39 100644 --- a/internal/godocfx/go.mod +++ b/internal/godocfx/go.mod @@ -8,7 +8,7 @@ require ( cloud.google.com/go/datastore v1.1.0 cloud.google.com/go/storage v1.11.0 github.com/kr/pretty v0.2.1 // indirect - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 gopkg.in/yaml.v2 v2.3.0 ) diff --git a/internal/godocfx/go.sum b/internal/godocfx/go.sum index 3a2578a12d5..c7bdb0f7b2c 100644 --- a/internal/godocfx/go.sum +++ b/internal/godocfx/go.sum @@ -239,8 +239,8 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200827163409-021d7c6f1ec3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -291,8 +291,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200827165113-ac2560b5e952/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/iot/apiv1/doc.go b/iot/apiv1/doc.go index 6754957117c..92bc48b967d 100644 --- a/iot/apiv1/doc.go +++ b/iot/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/kms/apiv1/doc.go b/kms/apiv1/doc.go index 0fa88785aec..166505d33d9 100644 --- a/kms/apiv1/doc.go +++ b/kms/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/language/apiv1/doc.go b/language/apiv1/doc.go index cc730ab5f3b..aed5610f028 100644 --- a/language/apiv1/doc.go +++ b/language/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/language/apiv1beta2/doc.go b/language/apiv1beta2/doc.go index f9a0f7089ef..ef3a80b4f7e 100644 --- a/language/apiv1beta2/doc.go +++ b/language/apiv1beta2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/logging/apiv2/doc.go b/logging/apiv2/doc.go index eef70d9ca9a..b2d8dde6030 100644 --- a/logging/apiv2/doc.go +++ b/logging/apiv2/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/logging/go.mod b/logging/go.mod index 3f8bbe6a141..dddcf5982b8 100644 --- a/logging/go.mod +++ b/logging/go.mod @@ -10,8 +10,8 @@ require ( github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/logging/go.sum b/logging/go.sum index 8ce1515c055..bb4253e8f59 100644 --- a/logging/go.sum +++ b/logging/go.sum @@ -409,8 +409,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -474,8 +474,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/longrunning/autogen/doc.go b/longrunning/autogen/doc.go index 15765351d1f..ecc548e98b7 100644 --- a/longrunning/autogen/doc.go +++ b/longrunning/autogen/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/managedidentities/apiv1/doc.go b/managedidentities/apiv1/doc.go index ebbbcbf3e77..a4d97d27a1d 100644 --- a/managedidentities/apiv1/doc.go +++ b/managedidentities/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/memcache/apiv1beta2/doc.go b/memcache/apiv1beta2/doc.go index 8970957d195..6bf32c8a4be 100644 --- a/memcache/apiv1beta2/doc.go +++ b/memcache/apiv1beta2/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/monitoring/apiv3/v2/doc.go b/monitoring/apiv3/v2/doc.go index 24440a547ee..2d07e9b79bd 100644 --- a/monitoring/apiv3/v2/doc.go +++ b/monitoring/apiv3/v2/doc.go @@ -53,7 +53,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/monitoring/dashboard/apiv1/doc.go b/monitoring/dashboard/apiv1/doc.go index 7ced374500c..87008baaffd 100644 --- a/monitoring/dashboard/apiv1/doc.go +++ b/monitoring/dashboard/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/notebooks/apiv1beta1/doc.go b/notebooks/apiv1beta1/doc.go index 7f1e23799a2..36b342e2aeb 100644 --- a/notebooks/apiv1beta1/doc.go +++ b/notebooks/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/agentendpoint/apiv1/doc.go b/osconfig/agentendpoint/apiv1/doc.go index 4abfde09ca3..ae4cd6bf9d8 100644 --- a/osconfig/agentendpoint/apiv1/doc.go +++ b/osconfig/agentendpoint/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/agentendpoint/apiv1beta/doc.go b/osconfig/agentendpoint/apiv1beta/doc.go index bae0459c617..b532d640ce6 100644 --- a/osconfig/agentendpoint/apiv1beta/doc.go +++ b/osconfig/agentendpoint/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/apiv1/doc.go b/osconfig/apiv1/doc.go index 6438d2f042f..93a61105ce7 100644 --- a/osconfig/apiv1/doc.go +++ b/osconfig/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/apiv1beta/doc.go b/osconfig/apiv1beta/doc.go index be88465b0ce..fa1d3ccfc98 100644 --- a/osconfig/apiv1beta/doc.go +++ b/osconfig/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/oslogin/apiv1/doc.go b/oslogin/apiv1/doc.go index 52230701140..9bccdd0a340 100644 --- a/oslogin/apiv1/doc.go +++ b/oslogin/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/oslogin/apiv1beta/doc.go b/oslogin/apiv1beta/doc.go index 8b82ff0de95..ee3ee0e9567 100644 --- a/oslogin/apiv1beta/doc.go +++ b/oslogin/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/phishingprotection/apiv1beta1/doc.go b/phishingprotection/apiv1beta1/doc.go index ff81846203d..f116ad9e4b3 100644 --- a/phishingprotection/apiv1beta1/doc.go +++ b/phishingprotection/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/policytroubleshooter/apiv1/doc.go b/policytroubleshooter/apiv1/doc.go index 88fa49f582c..e2cc1a4a088 100644 --- a/policytroubleshooter/apiv1/doc.go +++ b/policytroubleshooter/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsub/apiv1/doc.go b/pubsub/apiv1/doc.go index e88213f87bc..81bf1be3bf4 100644 --- a/pubsub/apiv1/doc.go +++ b/pubsub/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsub/go.mod b/pubsub/go.mod index 660bb26622d..65ad3e059f6 100644 --- a/pubsub/go.mod +++ b/pubsub/go.mod @@ -11,8 +11,8 @@ require ( golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/pubsub/go.sum b/pubsub/go.sum index d19766e961f..438acd2fa9c 100644 --- a/pubsub/go.sum +++ b/pubsub/go.sum @@ -342,8 +342,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -407,8 +407,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/pubsublite/apiv1/doc.go b/pubsublite/apiv1/doc.go index a410e0b6bb8..541fdf0bbcc 100644 --- a/pubsublite/apiv1/doc.go +++ b/pubsublite/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsublite/go.mod b/pubsublite/go.mod index 9d593745589..e58fc2bd8ff 100644 --- a/pubsublite/go.mod +++ b/pubsublite/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/pubsublite/go.sum b/pubsublite/go.sum index e49614fdb62..45bd8501769 100644 --- a/pubsublite/go.sum +++ b/pubsublite/go.sum @@ -296,8 +296,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -361,8 +361,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/recaptchaenterprise/apiv1/doc.go b/recaptchaenterprise/apiv1/doc.go index de61906104f..04e68a6cd86 100644 --- a/recaptchaenterprise/apiv1/doc.go +++ b/recaptchaenterprise/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recaptchaenterprise/apiv1beta1/doc.go b/recaptchaenterprise/apiv1beta1/doc.go index ec456fd9dba..09b0b891b90 100644 --- a/recaptchaenterprise/apiv1beta1/doc.go +++ b/recaptchaenterprise/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recommender/apiv1/doc.go b/recommender/apiv1/doc.go index 20cf925aa38..4ec48c434e0 100644 --- a/recommender/apiv1/doc.go +++ b/recommender/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recommender/apiv1beta1/doc.go b/recommender/apiv1beta1/doc.go index cbd928a8a4f..98d11840ab3 100644 --- a/recommender/apiv1beta1/doc.go +++ b/recommender/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/redis/apiv1/doc.go b/redis/apiv1/doc.go index 29a04317433..c04e6209c06 100644 --- a/redis/apiv1/doc.go +++ b/redis/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/redis/apiv1beta1/doc.go b/redis/apiv1beta1/doc.go index 25fd5ba4f96..0f8e101495a 100644 --- a/redis/apiv1beta1/doc.go +++ b/redis/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/scheduler/apiv1/doc.go b/scheduler/apiv1/doc.go index fb42fca8701..8661ef974fb 100644 --- a/scheduler/apiv1/doc.go +++ b/scheduler/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/scheduler/apiv1beta1/doc.go b/scheduler/apiv1beta1/doc.go index 936b2881e48..76cdf07ab40 100644 --- a/scheduler/apiv1beta1/doc.go +++ b/scheduler/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/secretmanager/apiv1/doc.go b/secretmanager/apiv1/doc.go index 3101436ba4c..f7448c1d971 100644 --- a/secretmanager/apiv1/doc.go +++ b/secretmanager/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/secretmanager/apiv1beta1/doc.go b/secretmanager/apiv1beta1/doc.go index f1df7a5a21c..793621e6cf1 100644 --- a/secretmanager/apiv1beta1/doc.go +++ b/secretmanager/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/security/privateca/apiv1beta1/doc.go b/security/privateca/apiv1beta1/doc.go index 7fb16075a8e..11ab7aa925c 100644 --- a/security/privateca/apiv1beta1/doc.go +++ b/security/privateca/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1/doc.go b/securitycenter/apiv1/doc.go index 7783822d98e..afda5d18139 100644 --- a/securitycenter/apiv1/doc.go +++ b/securitycenter/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1beta1/doc.go b/securitycenter/apiv1beta1/doc.go index d1cddd3c311..a83049384f3 100644 --- a/securitycenter/apiv1beta1/doc.go +++ b/securitycenter/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1p1beta1/doc.go b/securitycenter/apiv1p1beta1/doc.go index 1c8f987c06b..0ddacd6806b 100644 --- a/securitycenter/apiv1p1beta1/doc.go +++ b/securitycenter/apiv1p1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/settings/apiv1beta1/doc.go b/securitycenter/settings/apiv1beta1/doc.go index 8ae12059320..990c3535143 100644 --- a/securitycenter/settings/apiv1beta1/doc.go +++ b/securitycenter/settings/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/servicedirectory/apiv1beta1/doc.go b/servicedirectory/apiv1beta1/doc.go index d8159eb2ce0..02966b02635 100644 --- a/servicedirectory/apiv1beta1/doc.go +++ b/servicedirectory/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/admin/database/apiv1/doc.go b/spanner/admin/database/apiv1/doc.go index 9381ea971fb..4c207c83fc4 100644 --- a/spanner/admin/database/apiv1/doc.go +++ b/spanner/admin/database/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/admin/instance/apiv1/doc.go b/spanner/admin/instance/apiv1/doc.go index add5abe9516..b0b242e6e6a 100644 --- a/spanner/admin/instance/apiv1/doc.go +++ b/spanner/admin/instance/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/apiv1/doc.go b/spanner/apiv1/doc.go index 3911c28cb5b..8928c787d4a 100644 --- a/spanner/apiv1/doc.go +++ b/spanner/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/go.mod b/spanner/go.mod index 1e551807eda..91492d268f2 100644 --- a/spanner/go.mod +++ b/spanner/go.mod @@ -8,10 +8,10 @@ require ( github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 google.golang.org/protobuf v1.25.0 ) diff --git a/spanner/go.sum b/spanner/go.sum index 70c86a77660..3f1727e02ac 100644 --- a/spanner/go.sum +++ b/spanner/go.sum @@ -401,8 +401,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -466,8 +466,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/speech/apiv1/doc.go b/speech/apiv1/doc.go index 72bf0f24016..5cec10edaca 100644 --- a/speech/apiv1/doc.go +++ b/speech/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/speech/apiv1p1beta1/doc.go b/speech/apiv1p1beta1/doc.go index f043e68b489..6b01a985886 100644 --- a/speech/apiv1p1beta1/doc.go +++ b/speech/apiv1p1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/storage/go.mod b/storage/go.mod index 06b804e098a..48c6de92729 100644 --- a/storage/go.mod +++ b/storage/go.mod @@ -8,8 +8,8 @@ require ( github.com/google/go-cmp v0.5.2 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 - golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c // indirect + golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f + google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 google.golang.org/grpc v1.33.2 ) diff --git a/storage/go.sum b/storage/go.sum index 4f9abf1097c..dcc715c3d64 100644 --- a/storage/go.sum +++ b/storage/go.sum @@ -386,8 +386,8 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c h1:quJUizHRFn7XriXTIOCLKSr76x2cMbNGfvfy9ubOO0g= -golang.org/x/tools v0.0.0-20201116002733-ac45abd4c88c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= +golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -451,8 +451,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f h1:YZKfGrT39pgYIg+3cfyIdK1z4VLjUPVboS1Ob49DyDA= -google.golang.org/genproto v0.0.0-20201116144945-7adebfbe6a3f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= +google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/talent/apiv4/doc.go b/talent/apiv4/doc.go index f7de5ea1cf3..7967343bbd0 100644 --- a/talent/apiv4/doc.go +++ b/talent/apiv4/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/talent/apiv4beta1/doc.go b/talent/apiv4beta1/doc.go index ecade668a0c..22f0a71fbb3 100644 --- a/talent/apiv4beta1/doc.go +++ b/talent/apiv4beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/texttospeech/apiv1/doc.go b/texttospeech/apiv1/doc.go index c4d902dad7d..75beaaecd42 100644 --- a/texttospeech/apiv1/doc.go +++ b/texttospeech/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/trace/apiv1/doc.go b/trace/apiv1/doc.go index be4a1412a57..d516a894d0b 100644 --- a/trace/apiv1/doc.go +++ b/trace/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/trace/apiv2/doc.go b/trace/apiv2/doc.go index e9c9432b3d4..d604b8d2b84 100644 --- a/trace/apiv2/doc.go +++ b/trace/apiv2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/translate/apiv3/doc.go b/translate/apiv3/doc.go index 20d1bb8c3f1..e492bb30719 100644 --- a/translate/apiv3/doc.go +++ b/translate/apiv3/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/video/transcoder/apiv1beta1/doc.go b/video/transcoder/apiv1beta1/doc.go index c9093376195..5206a8e00b5 100644 --- a/video/transcoder/apiv1beta1/doc.go +++ b/video/transcoder/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/videointelligence/apiv1/doc.go b/videointelligence/apiv1/doc.go index 64ebe4b0320..2bab2f8b5f5 100644 --- a/videointelligence/apiv1/doc.go +++ b/videointelligence/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/videointelligence/apiv1beta2/doc.go b/videointelligence/apiv1beta2/doc.go index a62527c2602..c497793b6a3 100644 --- a/videointelligence/apiv1beta2/doc.go +++ b/videointelligence/apiv1beta2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/vision/apiv1/doc.go b/vision/apiv1/doc.go index d915cba1c60..eb27b71b4b0 100644 --- a/vision/apiv1/doc.go +++ b/vision/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/vision/apiv1p1beta1/doc.go b/vision/apiv1p1beta1/doc.go index 7448afa0535..4c3115c4a35 100644 --- a/vision/apiv1p1beta1/doc.go +++ b/vision/apiv1p1beta1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/webrisk/apiv1/doc.go b/webrisk/apiv1/doc.go index c27a67c7ae9..1e796e3a6a4 100644 --- a/webrisk/apiv1/doc.go +++ b/webrisk/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/webrisk/apiv1beta1/doc.go b/webrisk/apiv1beta1/doc.go index c73f78abfcc..ecb2b421290 100644 --- a/webrisk/apiv1beta1/doc.go +++ b/webrisk/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/websecurityscanner/apiv1/doc.go b/websecurityscanner/apiv1/doc.go index 93a00899597..ff11e71bb31 100644 --- a/websecurityscanner/apiv1/doc.go +++ b/websecurityscanner/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/workflows/apiv1beta/doc.go b/workflows/apiv1beta/doc.go index dcd27a1ea03..8baac774c68 100644 --- a/workflows/apiv1beta/doc.go +++ b/workflows/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/workflows/executions/apiv1beta/doc.go b/workflows/executions/apiv1beta/doc.go index e2d81ef27e9..59930cb804c 100644 --- a/workflows/executions/apiv1beta/doc.go +++ b/workflows/executions/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201116" +const versionClient = "20201117" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) From c731dd575fd6ccad580aeb7d44cf7027dd06fb74 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 17 Nov 2020 16:50:02 +0100 Subject: [PATCH 02/15] chore(all): update all (#3211) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [cloud.google.com/go](https://togithub.com/googleapis/google-cloud-go) | require | minor | `v0.71.0` -> `v0.72.0` | | [github.com/google/go-cmp](https://togithub.com/google/go-cmp) | require | patch | `v0.5.2` -> `v0.5.3` | | [github.com/google/pprof](https://togithub.com/google/pprof) | require | digest | `3e6fc7f` -> `cf23057` | | [golang.org/x/net](https://togithub.com/golang/net) | require | digest | `ff519b6` -> `69a7880` | | [golang.org/x/oauth2](https://togithub.com/golang/oauth2) | require | digest | `5d25da1` -> `9fd6049` | --- ### Release Notes
googleapis/google-cloud-go ### [`v0.72.0`](https://togithub.com/googleapis/google-cloud-go/releases/v0.72.0) [Compare Source](https://togithub.com/googleapis/google-cloud-go/compare/v0.71.0...v0.72.0) ##### Features - **all:** auto-regenerate gapics , refs [#​3177](https://www.github.com/googleapis/google-cloud-go/issues/3177) [#​3164](https://www.github.com/googleapis/google-cloud-go/issues/3164) [#​3149](https://www.github.com/googleapis/google-cloud-go/issues/3149) [#​3142](https://www.github.com/googleapis/google-cloud-go/issues/3142) [#​3136](https://www.github.com/googleapis/google-cloud-go/issues/3136) [#​3130](https://www.github.com/googleapis/google-cloud-go/issues/3130) [#​3121](https://www.github.com/googleapis/google-cloud-go/issues/3121) [#​3119](https://www.github.com/googleapis/google-cloud-go/issues/3119) ##### Bug Fixes - **all:** Update hand-written clients to not use WithEndpoint override ([#​3111](https://www.github.com/googleapis/google-cloud-go/issues/3111)) ([f0cfd05](https://www.github.com/googleapis/google-cloud-go/commit/f0cfd0532f5204ff16f7bae406efa72603d16f44)) - **internal/godocfx:** rename README files to pkg-readme ([#​3185](https://www.github.com/googleapis/google-cloud-go/issues/3185)) ([d3a8571](https://www.github.com/googleapis/google-cloud-go/commit/d3a85719be411b692aede3331abb29b5a7b3da9a))
google/go-cmp ### [`v0.5.3`](https://togithub.com/google/go-cmp/releases/v0.5.3) [Compare Source](https://togithub.com/google/go-cmp/compare/v0.5.2...v0.5.3) Minor documentation changes: ([#​236](https://togithub.com/google/go-cmp/issues/236)) Fix license headers ([#​205](https://togithub.com/google/go-cmp/issues/205)) Add an example for IgnoreFields ([#​237](https://togithub.com/google/go-cmp/issues/237)) Fix Diff documentation
--- ### Renovate configuration :date: **Schedule**: "before 3am on Monday" (UTC). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/config-help/issues) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/google-cloud-go). --- bigquery/go.mod | 4 ++-- bigquery/go.sum | 22 ++++++++++------------ bigtable/go.mod | 6 +++--- bigtable/go.sum | 24 ++++++++++++------------ datastore/go.mod | 4 ++-- datastore/go.sum | 22 ++++++++++------------ firestore/go.mod | 4 ++-- firestore/go.sum | 21 ++++++++++----------- go.mod | 8 ++++---- go.sum | 12 ++++++++---- internal/gapicgen/go.mod | 2 +- internal/gapicgen/go.sum | 4 ++-- internal/godocfx/go.mod | 2 +- internal/godocfx/go.sum | 10 +++++++--- logging/go.mod | 6 +++--- logging/go.sum | 23 ++++++++++++----------- pubsub/go.mod | 6 +++--- pubsub/go.sum | 23 ++++++++++++----------- pubsublite/go.mod | 4 ++-- pubsublite/go.sum | 21 ++++++++++----------- spanner/go.mod | 4 ++-- spanner/go.sum | 21 ++++++++++----------- storage/go.mod | 6 +++--- storage/go.sum | 23 ++++++++++++----------- 24 files changed, 143 insertions(+), 139 deletions(-) diff --git a/bigquery/go.mod b/bigquery/go.mod index 875e542a630..92bed66df5c 100644 --- a/bigquery/go.mod +++ b/bigquery/go.mod @@ -3,10 +3,10 @@ module cloud.google.com/go/bigquery go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 cloud.google.com/go/storage v1.10.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 diff --git a/bigquery/go.sum b/bigquery/go.sum index bb7d2cd5755..4d90c55b727 100644 --- a/bigquery/go.sum +++ b/bigquery/go.sum @@ -23,8 +23,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -123,6 +123,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= @@ -266,8 +268,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -339,6 +341,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -396,8 +400,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -432,8 +435,6 @@ google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -489,8 +490,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c h1:Lq4llNryJoaVFRm google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -515,8 +515,6 @@ google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1 h1:SfXqXS5hkufcdZ/mHtYCh53P2b+92WQq/DZcKLgsFRs= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/bigtable/go.mod b/bigtable/go.mod index 4e933f7e04b..c9dd5697393 100644 --- a/bigtable/go.mod +++ b/bigtable/go.mod @@ -3,12 +3,12 @@ module cloud.google.com/go/bigtable go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 github.com/google/btree v1.0.0 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 diff --git a/bigtable/go.sum b/bigtable/go.sum index ae2c158223d..6af98194bdd 100644 --- a/bigtable/go.sum +++ b/bigtable/go.sum @@ -23,8 +23,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -129,6 +129,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -272,8 +274,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -284,6 +286,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -346,6 +350,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -404,8 +410,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -443,8 +448,6 @@ google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -501,8 +504,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c h1:Lq4llNryJoaVFRm google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -527,8 +529,6 @@ google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1 h1:SfXqXS5hkufcdZ/mHtYCh53P2b+92WQq/DZcKLgsFRs= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/datastore/go.mod b/datastore/go.mod index 08dbdae9b48..0806fec1875 100644 --- a/datastore/go.mod +++ b/datastore/go.mod @@ -3,9 +3,9 @@ module cloud.google.com/go/datastore go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 diff --git a/datastore/go.sum b/datastore/go.sum index 050244c4f05..07eac46bbdb 100644 --- a/datastore/go.sum +++ b/datastore/go.sum @@ -23,8 +23,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -125,6 +125,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -267,8 +269,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -341,6 +343,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -399,8 +403,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -437,8 +440,6 @@ google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -495,8 +496,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c h1:Lq4llNryJoaVFRm google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3 h1:sg8vLDNIxFPHTchfhH1E3AI32BL3f23oie38xUWnJM8= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -512,8 +512,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/firestore/go.mod b/firestore/go.mod index d2594216a6d..789ebc17f6d 100644 --- a/firestore/go.mod +++ b/firestore/go.mod @@ -3,9 +3,9 @@ module cloud.google.com/go/firestore go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 diff --git a/firestore/go.sum b/firestore/go.sum index da83d14d19d..07aaeacef9c 100644 --- a/firestore/go.sum +++ b/firestore/go.sum @@ -22,8 +22,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -126,6 +126,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -268,8 +270,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -342,6 +344,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -401,8 +405,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -426,8 +429,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -467,7 +468,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -483,8 +484,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/go.mod b/go.mod index 5c717467508..115ea089eb4 100644 --- a/go.mod +++ b/go.mod @@ -6,15 +6,15 @@ require ( cloud.google.com/go/storage v1.10.0 github.com/golang/mock v1.4.4 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/google/martian/v3 v3.1.0 - github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c + github.com/google/pprof v0.0.0-20201116185724-cf230572f49e github.com/googleapis/gax-go/v2 v2.0.5 github.com/jstemmer/go-junit-report v0.9.1 go.opencensus.io v0.22.5 golang.org/x/lint v0.0.0-20200302205851-738671d3881b - golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/net v0.0.0-20201110031124-69a78807bb2b + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/text v0.3.4 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 google.golang.org/api v0.35.0 diff --git a/go.sum b/go.sum index e4500b2fd91..836f6211872 100644 --- a/go.sum +++ b/go.sum @@ -121,6 +121,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= @@ -137,8 +139,8 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c h1:Jx2lEv4nMccTJE+IIZOVIvk+DjNKlRsW0sm1uBr896U= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201116185724-cf230572f49e h1:x0wSM6/MWepJDtJGtAxILAbZjzcCGZx2LvuYISldxvo= +github.com/google/pprof v0.0.0-20201116185724-cf230572f49e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= @@ -265,8 +267,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -277,6 +279,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/internal/gapicgen/go.mod b/internal/gapicgen/go.mod index b2dfd8002da..7ad47723e65 100644 --- a/internal/gapicgen/go.mod +++ b/internal/gapicgen/go.mod @@ -12,7 +12,7 @@ require ( github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect github.com/stretchr/testify v1.5.1 // indirect golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect gopkg.in/src-d/go-git.v4 v4.13.1 diff --git a/internal/gapicgen/go.sum b/internal/gapicgen/go.sum index 28fc4341ab5..c8710c90a04 100644 --- a/internal/gapicgen/go.sum +++ b/internal/gapicgen/go.sum @@ -258,8 +258,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/internal/godocfx/go.mod b/internal/godocfx/go.mod index 6d080a97e39..1e9cad2a08a 100644 --- a/internal/godocfx/go.mod +++ b/internal/godocfx/go.mod @@ -3,7 +3,7 @@ module cloud.google.com/go/internal/godocfx go 1.15 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 cloud.google.com/go/bigquery v1.8.0 cloud.google.com/go/datastore v1.1.0 cloud.google.com/go/storage v1.11.0 diff --git a/internal/godocfx/go.sum b/internal/godocfx/go.sum index c7bdb0f7b2c..048ea4e2750 100644 --- a/internal/godocfx/go.sum +++ b/internal/godocfx/go.sum @@ -67,9 +67,11 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201116185724-cf230572f49e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= @@ -157,8 +159,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -166,6 +168,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/logging/go.mod b/logging/go.mod index dddcf5982b8..10e75223700 100644 --- a/logging/go.mod +++ b/logging/go.mod @@ -3,13 +3,13 @@ module cloud.google.com/go/logging go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 cloud.google.com/go/storage v1.10.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 diff --git a/logging/go.sum b/logging/go.sum index bb4253e8f59..194d096789b 100644 --- a/logging/go.sum +++ b/logging/go.sum @@ -22,8 +22,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -128,6 +128,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= @@ -272,8 +274,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -284,6 +286,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -348,6 +352,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -407,8 +413,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -432,8 +437,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -473,7 +476,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -489,8 +492,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/pubsub/go.mod b/pubsub/go.mod index 65ad3e059f6..1c6cbb25370 100644 --- a/pubsub/go.mod +++ b/pubsub/go.mod @@ -3,12 +3,12 @@ module cloud.google.com/go/pubsub go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect diff --git a/pubsub/go.sum b/pubsub/go.sum index 438acd2fa9c..11de52bd003 100644 --- a/pubsub/go.sum +++ b/pubsub/go.sum @@ -17,8 +17,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -105,6 +105,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -224,8 +226,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -234,6 +236,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -289,6 +293,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= @@ -340,8 +346,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -365,8 +370,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -406,7 +409,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -422,8 +425,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/pubsublite/go.mod b/pubsublite/go.mod index e58fc2bd8ff..32e41180b0b 100644 --- a/pubsublite/go.mod +++ b/pubsublite/go.mod @@ -3,9 +3,9 @@ module cloud.google.com/go/pubsublite go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 diff --git a/pubsublite/go.sum b/pubsublite/go.sum index 45bd8501769..b47162093a1 100644 --- a/pubsublite/go.sum +++ b/pubsublite/go.sum @@ -13,8 +13,8 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -88,6 +88,8 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -197,8 +199,8 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -250,6 +252,8 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -294,8 +298,7 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -319,8 +322,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -360,7 +361,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -376,8 +377,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/spanner/go.mod b/spanner/go.mod index 91492d268f2..f8af1964e8b 100644 --- a/spanner/go.mod +++ b/spanner/go.mod @@ -3,9 +3,9 @@ module cloud.google.com/go/spanner go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect diff --git a/spanner/go.sum b/spanner/go.sum index 3f1727e02ac..d70b8fed595 100644 --- a/spanner/go.sum +++ b/spanner/go.sum @@ -22,8 +22,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -126,6 +126,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -267,8 +269,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -341,6 +343,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -399,8 +403,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -424,8 +427,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -465,7 +466,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -481,8 +482,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= diff --git a/storage/go.mod b/storage/go.mod index 48c6de92729..a8e657854a7 100644 --- a/storage/go.mod +++ b/storage/go.mod @@ -3,11 +3,11 @@ module cloud.google.com/go/storage go 1.11 require ( - cloud.google.com/go v0.71.0 + cloud.google.com/go v0.72.0 github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 + golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect google.golang.org/api v0.35.0 google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 diff --git a/storage/go.sum b/storage/go.sum index dcc715c3d64..e6bfe9c50b4 100644 --- a/storage/go.sum +++ b/storage/go.sum @@ -21,8 +21,8 @@ cloud.google.com/go v0.62.0 h1:RmDygqvj27Zf3fCQjQRtLyC7KwFcHkeJitcO0OoGOcA= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.71.0 h1:2ha722Z08cmRa0orJrzBaszYQcLbLFcsZHsGSj/kIF4= -cloud.google.com/go v0.71.0/go.mod h1:qZfY4Y7AEIQwG/fQYD3xrxLNkQZ0Xzf3HGeqCkA6LVM= +cloud.google.com/go v0.72.0 h1:eWRCuwubtDrCJG0oSUMgnsbD4CmPFQF2ei4OFbXvwww= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE= @@ -120,6 +120,8 @@ github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= @@ -258,8 +260,8 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4 h1:awiuzyrRjJDb+OXi9ceHO3SDxVoN3JER57mhtqkdQBs= -golang.org/x/net v0.0.0-20201026091529-146b70c837a4/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= @@ -269,6 +271,8 @@ golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BG golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43 h1:ld7aEMNHoBnnDAX15v1T6z31v8HwR2A9FYOuAhWqkwc= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 h1:Mj83v+wSRNEar42a/MQgxk9X42TdEmrOl9i+y8WbxLo= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -329,6 +333,8 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -384,8 +390,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671 h1:8ylPbtgKXakJwDQKPjMJ6BSnlEIFViV0tYnu5/1Omk8= -golang.org/x/tools v0.0.0-20201030143252-cf7a54d06671/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -409,8 +414,6 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0 h1:k40adF3uR+6x/+hO5Dh4ZFUqFp67vxvbpafFiJxl10A= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0 h1:TBCmTTxUrRDA1iTctnK/fIeitxIZ+TQuaf0j29fmCGo= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -450,7 +453,7 @@ google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201030142918-24207fddd1c3/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -466,8 +469,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1 h1:DGeFlSan2f+WEtCERJ4J9GJWk15TxUi8QGagfI87Xyc= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= From 5c440192105fe3e9b5dd1b584118b309113935e3 Mon Sep 17 00:00:00 2001 From: Jack Henschel Date: Tue, 17 Nov 2020 22:50:42 +0100 Subject: [PATCH 03/15] feat(firestore): support "!=" and "not-in" query operators (#3207) Firestore Version 7.21.0 - September 17, 2020 - introduced support for the "!=" (NOT_EQUAL) and "not-in" (NOT_IN) query operators: https://firebase.google.com/support/release-notes/js#version_7210_-_september_17_2020 Query operator documentation: https://firebase.google.com/docs/firestore/query-data/queries This patch adds support for these two new operators and adds test cases for them. --- firestore/integration_test.go | 7 +++++++ firestore/query.go | 4 ++++ firestore/query_test.go | 12 +++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/firestore/integration_test.go b/firestore/integration_test.go index 123465fa119..e0c073f8cbb 100644 --- a/firestore/integration_test.go +++ b/firestore/integration_test.go @@ -651,6 +651,13 @@ func TestIntegration_QueryDocuments(t *testing.T) { }{ {q, wants}, {q.Where("q", ">", 1), wants[2:]}, + {q.Where("q", "<", 1), wants[:1]}, + {q.Where("q", "==", 1), wants[1:2]}, + {q.Where("q", "!=", 0), wants[1:]}, + {q.Where("q", ">=", 1), wants[1:]}, + {q.Where("q", "<=", 1), wants[:2]}, + {q.Where("q", "in", []int{0, 1}), wants[:2]}, + {q.Where("q", "not-in", []int{0, 1}), wants[2:]}, {q.WherePath([]string{"q"}, ">", 1), wants[2:]}, {q.Offset(1).Limit(1), wants[1:2]}, {q.StartAt(1), wants[1:]}, diff --git a/firestore/query.go b/firestore/query.go index abd30d5713e..a49a4b262e0 100644 --- a/firestore/query.go +++ b/firestore/query.go @@ -500,8 +500,12 @@ func (f filter) toProto() (*pb.StructuredQuery_Filter, error) { op = pb.StructuredQuery_FieldFilter_GREATER_THAN_OR_EQUAL case "==": op = pb.StructuredQuery_FieldFilter_EQUAL + case "!=": + op = pb.StructuredQuery_FieldFilter_NOT_EQUAL case "in": op = pb.StructuredQuery_FieldFilter_IN + case "not-in": + op = pb.StructuredQuery_FieldFilter_NOT_IN case "array-contains": op = pb.StructuredQuery_FieldFilter_ARRAY_CONTAINS case "array-contains-any": diff --git a/firestore/query_test.go b/firestore/query_test.go index 2ab23ea4814..ca8c0061442 100644 --- a/firestore/query_test.go +++ b/firestore/query_test.go @@ -143,11 +143,21 @@ func TestQueryToProto(t *testing.T) { in: q.Where("a", "==", float32(math.NaN())), want: &pb.StructuredQuery{Where: filtr([]string{"a"}, "==", math.NaN())}, }, + { + desc: `q.Where("a", "!=", 3)`, + in: q.Where("a", "!=", 3), + want: &pb.StructuredQuery{Where: filtr([]string{"a"}, "!=", 3)}, + }, { desc: `q.Where("a", "in", []int{7, 8})`, in: q.Where("a", "in", []int{7, 8}), want: &pb.StructuredQuery{Where: filtr([]string{"a"}, "in", []int{7, 8})}, }, + { + desc: `q.Where("a", "not-in", []int{9})`, + in: q.Where("a", "not-in", []int{9}), + want: &pb.StructuredQuery{Where: filtr([]string{"a"}, "not-in", []int{9})}, + }, { desc: `q.Where("c", "array-contains", 1)`, in: q.Where("c", "array-contains", 1), @@ -456,7 +466,7 @@ func TestQueryToProtoErrors(t *testing.T) { q := coll.Query for i, query := range []Query{ {}, // no collection ID - q.Where("x", "!=", 1), // invalid operator + q.Where("x", "<>", 1), // invalid operator q.Where("~", ">", 1), // invalid path q.WherePath([]string{"*", ""}, ">", 1), // invalid path q.StartAt(1), // no OrderBy From 99f7212bd70bb333c1aa1c7a57348b4dfd80d31b Mon Sep 17 00:00:00 2001 From: David Symonds Date: Wed, 18 Nov 2020 15:30:13 +1100 Subject: [PATCH 04/15] feat(spanner/spannertest): implement FULL JOIN (#3218) This doesn't fit into the same structure as the other JOINs, but is approximately implemented as a LEFT JOIN with a catchup phase of emitting the unmatched RHS rows. --- spanner/spannertest/README.md | 2 +- spanner/spannertest/db_query.go | 104 ++++++++++++++++++++---- spanner/spannertest/integration_test.go | 28 +++++++ 3 files changed, 115 insertions(+), 19 deletions(-) diff --git a/spanner/spannertest/README.md b/spanner/spannertest/README.md index d05f9d277c6..7fc451a6e22 100644 --- a/spanner/spannertest/README.md +++ b/spanner/spannertest/README.md @@ -21,7 +21,7 @@ by ascending esotericism: - more aggregation functions - SELECT HAVING - case insensitivity -- FULL JOIN, multiple joins +- multiple joins - alternate literal types (esp. strings) - STRUCT types - transaction simulation diff --git a/spanner/spannertest/db_query.go b/spanner/spannertest/db_query.go index b9bbc01b0d0..a7735333402 100644 --- a/spanner/spannertest/db_query.go +++ b/spanner/spannertest/db_query.go @@ -741,7 +741,10 @@ func newJoinIter(lhs, rhs *rawIter, lhsEC, rhsEC evalContext, sfj spansql.Select ji.primary, ji.secondaryOrig = rhs, lhs ji.primaryOffset, ji.secondaryOffset = len(rhsEC.cols), 0 case spansql.FullJoin: - return nil, evalContext{}, fmt.Errorf("TODO: can't yet evaluate FULL JOIN") + // FULL JOIN is implemented as a LEFT JOIN with tracking for which rows of the RHS + // have been used. Then, at the end of the iteration, the unused RHS rows are emitted. + ji.nullPad = true + ji.used = make([]bool, 0, 10) // arbitrary preallocation } ji.ec.cols, ji.ec.row = nil, nil @@ -781,11 +784,12 @@ func (ji *joinIter) prepNonUsing(on spansql.BoolExpr, lhsEC, rhsEC evalContext) } return b != nil && *b, nil } - ji.zero = func(primary row) { + ji.zero = func(primary, secondary row) { for i := range ji.ec.row { ji.ec.row[i] = nil } copy(ji.ec.row[ji.primaryOffset:], primary) + copy(ji.ec.row[ji.secondaryOffset:], secondary) } } @@ -844,11 +848,18 @@ func (ji *joinIter) prepUsing(using []spansql.ID, lhsEC, rhsEC evalContext, flip return r[i] } // populate writes the data to ji.ec.row in the correct positions. - populate := func(primary, secondary row) { // secondary may be nil + populate := func(primary, secondary row) { // either may be nil j := 0 - for _, pi := range primaryUsing { - ji.ec.row[j] = primary[pi] - j++ + if primary != nil { + for _, pi := range primaryUsing { + ji.ec.row[j] = primary[pi] + j++ + } + } else { + for _, si := range secondaryUsing { + ji.ec.row[j] = secondary[si] + j++ + } } lhs, rhs := primary, secondary if flipped { @@ -873,8 +884,8 @@ func (ji *joinIter) prepUsing(using []spansql.ID, lhsEC, rhsEC evalContext, flip populate(primary, secondary) return true, nil } - ji.zero = func(primary row) { - populate(primary, nil) + ji.zero = func(primary, secondary row) { + populate(primary, secondary) } return nil } @@ -894,16 +905,24 @@ type joinIter struct { // should be yielded with null padding (e.g. OUTER JOINs). nullPad bool - primaryRow row // current row from primary, or nil if it is time to advance - secondary *rawIter // current clone of secondary - any bool // true if any secondary rows have matched primaryRow + primaryRow row // current row from primary, or nil if it is time to advance + secondary *rawIter // current clone of secondary + secondaryRead int // number of rows already read from secondary + any bool // true if any secondary rows have matched primaryRow // cond reports whether the primary and secondary rows "join" (e.g. the ON clause is true). // It populates ec.row with the output. cond func(primary, secondary row) (bool, error) - // zero populates ec.row with the primary row and sets the remainder to NULL. - // This is used when nullPad is true and a primary row doesn't match any secondary row. - zero func(primary row) + // zero populates ec.row with the primary or secondary row data (either of which may be nil), + // and sets the remainder to NULL. + // This is used when nullPad is true and a primary or secondary row doesn't match. + zero func(primary, secondary row) + + // For FULL JOIN, this tracks the secondary rows that have been used. + // It is non-nil when being used. + used []bool + zeroUnused bool // set when emitting unused secondary rows + unusedIndex int // next index of used to check } func (ji *joinIter) Cols() []colInfo { return ji.ec.cols } @@ -915,16 +934,49 @@ func (ji *joinIter) nextPrimary() error { return err } ji.secondary = ji.secondaryOrig.clone() + ji.secondaryRead = 0 ji.any = false return nil } func (ji *joinIter) Next() (row, error) { - if ji.primaryRow == nil { - if err := ji.nextPrimary(); err != nil { + if ji.primaryRow == nil && !ji.zeroUnused { + err := ji.nextPrimary() + if err == io.EOF && ji.used != nil { + // Drop down to emitting unused secondary rows. + ji.zeroUnused = true + ji.secondary = nil + goto scanJiUsed + } + if err != nil { return nil, err } } +scanJiUsed: + if ji.zeroUnused { + if ji.secondary == nil { + ji.secondary = ji.secondaryOrig.clone() + ji.secondaryRead = 0 + } + for ji.unusedIndex < len(ji.used) && ji.used[ji.unusedIndex] { + ji.unusedIndex++ + } + if ji.unusedIndex >= len(ji.used) || ji.secondaryRead >= len(ji.used) { + // Truly finished. + return nil, io.EOF + } + var secondaryRow row + for ji.secondaryRead <= ji.unusedIndex { + var err error + secondaryRow, err = ji.secondary.Next() + if err != nil { + return nil, err + } + ji.secondaryRead++ + } + ji.zero(nil, secondaryRow) + return ji.ec.row, nil + } for { secondaryRow, err := ji.secondary.Next() @@ -932,13 +984,19 @@ func (ji *joinIter) Next() (row, error) { // Finished the current primary row. if !ji.any && ji.nullPad { - ji.zero(ji.primaryRow) + ji.zero(ji.primaryRow, nil) ji.primaryRow = nil return ji.ec.row, nil } // Advance to next one. - if err := ji.nextPrimary(); err != nil { + err := ji.nextPrimary() + if err == io.EOF && ji.used != nil { + ji.zeroUnused = true + ji.secondary = nil + goto scanJiUsed + } + if err != nil { return nil, err } continue @@ -946,6 +1004,12 @@ func (ji *joinIter) Next() (row, error) { if err != nil { return nil, err } + ji.secondaryRead++ + if ji.used != nil { + for len(ji.used) < ji.secondaryRead { + ji.used = append(ji.used, false) + } + } // We have a pair of rows to consider. match, err := ji.cond(ji.primaryRow, secondaryRow) @@ -956,6 +1020,10 @@ func (ji *joinIter) Next() (row, error) { continue } ji.any = true + if ji.used != nil { + // Make a note that we used this secondary row. + ji.used[ji.secondaryRead-1] = true + } return ji.ec.row, nil } } diff --git a/spanner/spannertest/integration_test.go b/spanner/spannertest/integration_test.go index f70b01f84b8..365dd78d0ca 100644 --- a/spanner/spannertest/integration_test.go +++ b/spanner/spannertest/integration_test.go @@ -959,6 +959,34 @@ func TestIntegration_ReadsAndQueries(t *testing.T) { {int64(2), "b", int64(3), "d"}, }, }, + { + // Same as in docs, but with a weird ORDER BY clause to match the row ordering. + `SELECT * FROM JoinA FULL OUTER JOIN JoinB ON JoinA.w = JoinB.y ORDER BY w IS NULL, w, x, y, z`, + nil, + [][]interface{}{ + {int64(1), "a", nil, nil}, + {int64(2), "b", int64(2), "k"}, + {int64(3), "c", int64(3), "m"}, + {int64(3), "c", int64(3), "n"}, + {int64(3), "d", int64(3), "m"}, + {int64(3), "d", int64(3), "n"}, + {nil, nil, int64(4), "p"}, + }, + }, + { + // Same as the previous, but using a USING clause instead of an ON clause. + `SELECT * FROM JoinC FULL OUTER JOIN JoinD USING (x) ORDER BY x, y, z`, + nil, + [][]interface{}{ + {int64(1), "a", nil}, + {int64(2), "b", "k"}, + {int64(3), "c", "m"}, + {int64(3), "c", "n"}, + {int64(3), "d", "m"}, + {int64(3), "d", "n"}, + {int64(4), nil, "p"}, + }, + }, { `SELECT * FROM JoinA LEFT OUTER JOIN JoinB AS B ON JoinA.w = B.y ORDER BY w, x, y, z`, nil, From 758a88d5994942bb70eafbb08949cc58462b9924 Mon Sep 17 00:00:00 2001 From: Tyler Bui-Palsulich <26876514+tbpg@users.noreply.github.com> Date: Wed, 18 Nov 2020 12:51:42 -0500 Subject: [PATCH 05/15] test(firestore): fix order by in integration test (#3227) --- firestore/integration_test.go | 42 +++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/firestore/integration_test.go b/firestore/integration_test.go index e0c073f8cbb..57d5479dc55 100644 --- a/firestore/integration_test.go +++ b/firestore/integration_test.go @@ -644,28 +644,32 @@ func TestIntegration_QueryDocuments(t *testing.T) { h.mustCreate(doc, map[string]interface{}{"q": i, "x": 1}) wants = append(wants, map[string]interface{}{"q": int64(i)}) } - q := coll.Select("q").OrderBy("q", Asc) + q := coll.Select("q") for i, test := range []struct { - q Query - want []map[string]interface{} + q Query + want []map[string]interface{} + orderBy bool // Some query types do not allow ordering. }{ - {q, wants}, - {q.Where("q", ">", 1), wants[2:]}, - {q.Where("q", "<", 1), wants[:1]}, - {q.Where("q", "==", 1), wants[1:2]}, - {q.Where("q", "!=", 0), wants[1:]}, - {q.Where("q", ">=", 1), wants[1:]}, - {q.Where("q", "<=", 1), wants[:2]}, - {q.Where("q", "in", []int{0, 1}), wants[:2]}, - {q.Where("q", "not-in", []int{0, 1}), wants[2:]}, - {q.WherePath([]string{"q"}, ">", 1), wants[2:]}, - {q.Offset(1).Limit(1), wants[1:2]}, - {q.StartAt(1), wants[1:]}, - {q.StartAfter(1), wants[2:]}, - {q.EndAt(1), wants[:2]}, - {q.EndBefore(1), wants[:1]}, - {q.LimitToLast(2), wants[1:]}, + {q, wants, true}, + {q.Where("q", ">", 1), wants[2:], true}, + {q.Where("q", "<", 1), wants[:1], true}, + {q.Where("q", "==", 1), wants[1:2], false}, + {q.Where("q", "!=", 0), wants[1:], true}, + {q.Where("q", ">=", 1), wants[1:], true}, + {q.Where("q", "<=", 1), wants[:2], true}, + {q.Where("q", "in", []int{0}), wants[:1], false}, + {q.Where("q", "not-in", []int{0, 1}), wants[2:], true}, + {q.WherePath([]string{"q"}, ">", 1), wants[2:], true}, + {q.Offset(1).Limit(1), wants[1:2], true}, + {q.StartAt(1), wants[1:], true}, + {q.StartAfter(1), wants[2:], true}, + {q.EndAt(1), wants[:2], true}, + {q.EndBefore(1), wants[:1], true}, + {q.LimitToLast(2), wants[1:], true}, } { + if test.orderBy { + test.q = test.q.OrderBy("q", Asc) + } gotDocs, err := test.q.Documents(ctx).GetAll() if err != nil { t.Errorf("#%d: %+v: %v", i, test.q, err) From 299b803aaee9a0dc0b2ec8c81fac66341045b8b2 Mon Sep 17 00:00:00 2001 From: tmdiep Date: Thu, 19 Nov 2020 12:13:51 +1100 Subject: [PATCH 06/15] feat(pubsublite): Single and multi partition subscribers (#3221) Implements: - subscriberStream: directly wraps the Subscribe bidi stream - singlePartitionSubscriber: wraps the committer and subscriberStream - multiPartitionSubscriber: receives messages from multiple fixed partitions --- pubsublite/internal/wire/flow_control.go | 6 +- pubsublite/internal/wire/subscriber.go | 327 +++++++++++ pubsublite/internal/wire/subscriber_test.go | 595 ++++++++++++++++++++ 3 files changed, 925 insertions(+), 3 deletions(-) create mode 100644 pubsublite/internal/wire/subscriber.go create mode 100644 pubsublite/internal/wire/subscriber_test.go diff --git a/pubsublite/internal/wire/flow_control.go b/pubsublite/internal/wire/flow_control.go index 785cdd097bb..3ac3a848bd0 100644 --- a/pubsublite/internal/wire/flow_control.go +++ b/pubsublite/internal/wire/flow_control.go @@ -32,7 +32,7 @@ type flowControlTokens struct { Messages int64 } -// A TokenCounter stores the amount of outstanding byte and message flow control +// A tokenCounter stores the amount of outstanding byte and message flow control // tokens that the client believes exists for the stream. type tokenCounter struct { Bytes int64 @@ -81,7 +81,7 @@ func (tc *tokenCounter) ToFlowControlRequest() *pb.FlowControlRequest { // flowControlBatcher tracks flow control tokens and manages batching of flow // control requests to avoid overwhelming the server. It is only accessed by -// the wireSubscriber. +// the subscribeStream. type flowControlBatcher struct { // The current amount of outstanding byte and message flow control tokens. clientTokens tokenCounter @@ -142,7 +142,7 @@ func (fc *flowControlBatcher) ShouldExpediteBatchRequest() bool { } // subscriberOffsetTracker tracks the expected offset of the next message -// received from the server. It is only accessed by the wireSubscriber. +// received from the server. It is only accessed by the subscribeStream. type subscriberOffsetTracker struct { minNextOffset int64 } diff --git a/pubsublite/internal/wire/subscriber.go b/pubsublite/internal/wire/subscriber.go new file mode 100644 index 00000000000..9aee40b0722 --- /dev/null +++ b/pubsublite/internal/wire/subscriber.go @@ -0,0 +1,327 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "context" + "errors" + "reflect" + "time" + + "google.golang.org/grpc" + + vkit "cloud.google.com/go/pubsublite/apiv1" + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +var ( + errServerNoMessages = errors.New("pubsublite: server delivered no messages") + errInvalidInitialSubscribeResponse = errors.New("pubsublite: first response from server was not an initial response for subscribe") + errInvalidSubscribeResponse = errors.New("pubsublite: received invalid subscribe response from server") + errNoInFlightSeek = errors.New("pubsublite: received seek response for no in-flight seek") +) + +// ReceivedMessage stores a received Pub/Sub message and AckConsumer for +// acknowledging the message. +type ReceivedMessage struct { + Msg *pb.SequencedMessage + Ack AckConsumer +} + +// MessageReceiverFunc receives a batch of Pub/Sub messages from a topic +// partition. +type MessageReceiverFunc func([]*ReceivedMessage) + +// The frequency of sending batch flow control requests. +const batchFlowControlPeriod = 100 * time.Millisecond + +// subscribeStream directly wraps the subscribe client stream. It passes +// messages to the message receiver and manages flow control. Flow control +// tokens are batched and sent to the stream via a periodic background task, +// although it can be expedited if the user is rapidly acking messages. +// +// Client-initiated seek unsupported. +type subscribeStream struct { + // Immutable after creation. + subClient *vkit.SubscriberClient + settings ReceiveSettings + subscription subscriptionPartition + initialReq *pb.SubscribeRequest + receiver MessageReceiverFunc + + // Fields below must be guarded with mutex. + stream *retryableStream + acks *ackTracker + offsetTracker subscriberOffsetTracker + flowControl flowControlBatcher + pollFlowControl *periodicTask + seekInFlight bool + + abstractService +} + +func newSubscribeStream(ctx context.Context, subClient *vkit.SubscriberClient, settings ReceiveSettings, + receiver MessageReceiverFunc, subscription subscriptionPartition, acks *ackTracker, disableTasks bool) *subscribeStream { + + s := &subscribeStream{ + subClient: subClient, + settings: settings, + subscription: subscription, + initialReq: &pb.SubscribeRequest{ + Request: &pb.SubscribeRequest_Initial{ + Initial: &pb.InitialSubscribeRequest{ + Subscription: subscription.Path, + Partition: int64(subscription.Partition), + }, + }, + }, + receiver: receiver, + acks: acks, + } + s.stream = newRetryableStream(ctx, s, settings.Timeout, reflect.TypeOf(pb.SubscribeResponse{})) + + backgroundTask := s.sendBatchFlowControl + if disableTasks { + backgroundTask = func() {} + } + s.pollFlowControl = newPeriodicTask(batchFlowControlPeriod, backgroundTask) + return s +} + +// Start establishes a subscribe stream connection and initializes flow control +// tokens from ReceiveSettings. +func (s *subscribeStream) Start() { + s.mu.Lock() + defer s.mu.Unlock() + + if s.unsafeUpdateStatus(serviceStarting, nil) { + s.stream.Start() + s.pollFlowControl.Start() + + s.flowControl.OnClientFlow(flowControlTokens{ + Bytes: int64(s.settings.MaxOutstandingBytes), + Messages: int64(s.settings.MaxOutstandingMessages), + }) + } +} + +// Stop immediately terminates the subscribe stream. +func (s *subscribeStream) Stop() { + s.mu.Lock() + defer s.mu.Unlock() + s.unsafeInitiateShutdown(serviceTerminating, nil) +} + +func (s *subscribeStream) newStream(ctx context.Context) (grpc.ClientStream, error) { + return s.subClient.Subscribe(addSubscriptionRoutingMetadata(ctx, s.subscription)) +} + +func (s *subscribeStream) initialRequest() (interface{}, bool) { + return s.initialReq, true +} + +func (s *subscribeStream) validateInitialResponse(response interface{}) error { + subscribeResponse, _ := response.(*pb.SubscribeResponse) + if subscribeResponse.GetInitial() == nil { + return errInvalidInitialSubscribeResponse + } + return nil +} + +func (s *subscribeStream) onStreamStatusChange(status streamStatus) { + s.mu.Lock() + defer s.mu.Unlock() + + switch status { + case streamConnected: + s.unsafeUpdateStatus(serviceActive, nil) + + // Reinitialize the offset and flow control tokens when a new subscribe + // stream instance is connected. + if seekReq := s.offsetTracker.RequestForRestart(); seekReq != nil { + // Note: If Send() returns false, the subscriber will either terminate or + // the stream will be reconnected. + if s.stream.Send(&pb.SubscribeRequest{ + Request: &pb.SubscribeRequest_Seek{Seek: seekReq}, + }) { + s.seekInFlight = true + } + } + s.unsafeSendFlowControl(s.flowControl.RequestForRestart()) + s.pollFlowControl.Start() + + case streamReconnecting: + s.seekInFlight = false + s.pollFlowControl.Stop() + + case streamTerminated: + s.unsafeInitiateShutdown(serviceTerminated, s.stream.Error()) + } +} + +func (s *subscribeStream) onResponse(response interface{}) { + var receivedMsgs []*ReceivedMessage + var err error + s.mu.Lock() + + subscribeResponse, _ := response.(*pb.SubscribeResponse) + switch { + case subscribeResponse.GetMessages() != nil: + receivedMsgs, err = s.unsafeOnMessageResponse(subscribeResponse.GetMessages()) + case subscribeResponse.GetSeek() != nil: + err = s.unsafeOnSeekResponse(subscribeResponse.GetSeek()) + default: + err = errInvalidSubscribeResponse + } + + if receivedMsgs != nil { + // Deliver messages without holding the mutex to prevent deadlocks. + s.mu.Unlock() + s.receiver(receivedMsgs) + return + } + if err != nil { + s.unsafeInitiateShutdown(serviceTerminated, err) + } + s.mu.Unlock() +} + +func (s *subscribeStream) unsafeOnSeekResponse(response *pb.SeekResponse) error { + if !s.seekInFlight { + return errNoInFlightSeek + } + s.seekInFlight = false + return nil +} + +func (s *subscribeStream) unsafeOnMessageResponse(response *pb.MessageResponse) ([]*ReceivedMessage, error) { + if len(response.Messages) == 0 { + return nil, errServerNoMessages + } + if err := s.offsetTracker.OnMessages(response.Messages); err != nil { + return nil, err + } + if err := s.flowControl.OnMessages(response.Messages); err != nil { + return nil, err + } + + var receivedMsgs []*ReceivedMessage + for _, msg := range response.Messages { + // Register outstanding acks, which are primarily handled by the + // `committer`. + ack := newAckConsumer(msg.GetCursor().GetOffset(), msg.GetSizeBytes(), s.onAck) + if err := s.acks.Push(ack); err != nil { + return nil, err + } + receivedMsgs = append(receivedMsgs, &ReceivedMessage{Msg: msg, Ack: ack}) + } + return receivedMsgs, nil +} + +func (s *subscribeStream) onAck(ac *ackConsumer) { + // Don't block the user's goroutine with potentially expensive ack processing. + go s.onAckAsync(ac.MsgBytes) +} + +func (s *subscribeStream) onAckAsync(msgBytes int64) { + s.mu.Lock() + defer s.mu.Unlock() + + if s.status == serviceActive { + s.unsafeAllowFlow(flowControlTokens{Bytes: msgBytes, Messages: 1}) + } +} + +// sendBatchFlowControl is called by the periodic background task. +func (s *subscribeStream) sendBatchFlowControl() { + s.mu.Lock() + defer s.mu.Unlock() + s.unsafeSendFlowControl(s.flowControl.ReleasePendingRequest()) +} + +func (s *subscribeStream) unsafeAllowFlow(allow flowControlTokens) { + s.flowControl.OnClientFlow(allow) + if s.flowControl.ShouldExpediteBatchRequest() { + s.unsafeSendFlowControl(s.flowControl.ReleasePendingRequest()) + } +} + +func (s *subscribeStream) unsafeSendFlowControl(req *pb.FlowControlRequest) { + if req == nil { + return + } + + // Note: If Send() returns false, the stream will be reconnected and + // flowControlBatcher.RequestForRestart() will be sent when the stream + // reconnects. So its return value is ignored. + s.stream.Send(&pb.SubscribeRequest{ + Request: &pb.SubscribeRequest_FlowControl{FlowControl: req}, + }) +} + +func (s *subscribeStream) unsafeInitiateShutdown(targetStatus serviceStatus, err error) { + if !s.unsafeUpdateStatus(targetStatus, err) { + return + } + + // No data to send. Immediately terminate the stream. + s.pollFlowControl.Stop() + s.stream.Stop() +} + +// singlePartitionSubscriber receives messages from a single topic partition. +// It requires 2 child services: +// - subscribeStream to receive messages from the subscribe stream. +// - committer to commit cursor offsets to the streaming commit cursor stream. +type singlePartitionSubscriber struct { + compositeService +} + +type singlePartitionSubscriberFactory struct { + ctx context.Context + subClient *vkit.SubscriberClient + cursorClient *vkit.CursorClient + settings ReceiveSettings + subscriptionPath string + receiver MessageReceiverFunc + disableTasks bool +} + +func (f *singlePartitionSubscriberFactory) New(partition int) *singlePartitionSubscriber { + subscription := subscriptionPartition{Path: f.subscriptionPath, Partition: partition} + acks := newAckTracker() + commit := newCommitter(f.ctx, f.cursorClient, f.settings, subscription, acks, f.disableTasks) + sub := newSubscribeStream(f.ctx, f.subClient, f.settings, f.receiver, subscription, acks, f.disableTasks) + ps := new(singlePartitionSubscriber) + ps.init() + ps.unsafeAddServices(sub, commit) + return ps +} + +// multiPartitionSubscriber receives messages from a fixed set of topic +// partitions. +type multiPartitionSubscriber struct { + compositeService +} + +func newMultiPartitionSubscriber(subFactory *singlePartitionSubscriberFactory) *multiPartitionSubscriber { + ms := new(multiPartitionSubscriber) + ms.init() + + for _, partition := range subFactory.settings.Partitions { + subscriber := subFactory.New(partition) + ms.unsafeAddServices(subscriber) + } + return ms +} diff --git a/pubsublite/internal/wire/subscriber_test.go b/pubsublite/internal/wire/subscriber_test.go new file mode 100644 index 00000000000..385c971543d --- /dev/null +++ b/pubsublite/internal/wire/subscriber_test.go @@ -0,0 +1,595 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "context" + "sort" + "testing" + "time" + + "cloud.google.com/go/internal/testutil" + "cloud.google.com/go/pubsublite/internal/test" + "github.com/golang/protobuf/proto" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +func testSubscriberSettings() ReceiveSettings { + settings := testReceiveSettings() + settings.MaxOutstandingMessages = 10 + settings.MaxOutstandingBytes = 1000 + return settings +} + +// initFlowControlReq returns the first expected flow control request when +// testSubscriberSettings are used. +func initFlowControlReq() *pb.SubscribeRequest { + return flowControlSubReq(flowControlTokens{Bytes: 1000, Messages: 10}) +} + +type testMessageReceiver struct { + t *testing.T + received chan *ReceivedMessage +} + +func newTestMessageReceiver(t *testing.T) *testMessageReceiver { + return &testMessageReceiver{ + t: t, + received: make(chan *ReceivedMessage, 5), + } +} + +func (tr *testMessageReceiver) onMessages(msgs []*ReceivedMessage) { + for _, msg := range msgs { + tr.received <- msg + } +} + +func (tr *testMessageReceiver) ValidateMsg(want *pb.SequencedMessage) AckConsumer { + select { + case <-time.After(serviceTestWaitTimeout): + tr.t.Errorf("Message (%v) not received within %v", want, serviceTestWaitTimeout) + return nil + case got := <-tr.received: + if !proto.Equal(got.Msg, want) { + tr.t.Errorf("Received message: got (%v), want (%v)", got.Msg, want) + } + return got.Ack + } +} + +type ByMsgOffset []*pb.SequencedMessage + +func (m ByMsgOffset) Len() int { return len(m) } +func (m ByMsgOffset) Swap(i, j int) { m[i], m[j] = m[j], m[i] } +func (m ByMsgOffset) Less(i, j int) bool { + return m[i].GetCursor().GetOffset() < m[j].GetCursor().GetOffset() +} + +func (tr *testMessageReceiver) ValidateMsgs(want []*pb.SequencedMessage) { + var got []*pb.SequencedMessage + for count := 0; count < len(want); count++ { + select { + case <-time.After(serviceTestWaitTimeout): + tr.t.Errorf("Received messages count: got %d, want %d", count, len(want)) + case received := <-tr.received: + received.Ack.Ack() + got = append(got, received.Msg) + } + } + + sort.Sort(ByMsgOffset(want)) + sort.Sort(ByMsgOffset(got)) + if !testutil.Equal(got, want) { + tr.t.Errorf("Received messages: got: %v\nwant: %v", got, want) + } +} + +func (tr *testMessageReceiver) VerifyNoMsgs() { + select { + case got := <-tr.received: + tr.t.Errorf("Got unexpected message: %v", got.Msg) + case <-time.After(20 * time.Millisecond): + // Wait to ensure no messages received. + } +} + +// testSubscribeStream wraps a subscribeStream for ease of testing. +type testSubscribeStream struct { + Receiver *testMessageReceiver + t *testing.T + sub *subscribeStream + serviceTestProxy +} + +func newTestSubscribeStream(t *testing.T, subscription subscriptionPartition, settings ReceiveSettings, acks *ackTracker) *testSubscribeStream { + ctx := context.Background() + subClient, err := newSubscriberClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + + ts := &testSubscribeStream{ + Receiver: newTestMessageReceiver(t), + t: t, + } + ts.sub = newSubscribeStream(ctx, subClient, settings, ts.Receiver.onMessages, subscription, acks, true) + ts.initAndStart(t, ts.sub, "Subscriber") + return ts +} + +// SendBatchFlowControl invokes the periodic background batch flow control. Note +// that the periodic task is disabled in tests. +func (ts *testSubscribeStream) SendBatchFlowControl() { + ts.sub.sendBatchFlowControl() +} + +func TestSubscribeStreamReconnect(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + msg1 := seqMsgWithOffsetAndSize(67, 200) + msg2 := seqMsgWithOffsetAndSize(68, 100) + permanentErr := status.Error(codes.FailedPrecondition, "permanent failure") + + verifiers := test.NewVerifiers(t) + + stream1 := test.NewRPCVerifier(t) + stream1.Push(initSubReq(subscription), initSubResp(), nil) + stream1.Push(initFlowControlReq(), msgSubResp(msg1), nil) + stream1.Push(nil, nil, status.Error(codes.Unavailable, "server unavailable")) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream1) + + // When reconnected, the subscribeStream should seek to msg2 and have + // subtracted flow control tokens. + stream2 := test.NewRPCVerifier(t) + stream2.Push(initSubReq(subscription), initSubResp(), nil) + stream2.Push(seekReq(68), seekResp(68), nil) + stream2.Push(flowControlSubReq(flowControlTokens{Bytes: 800, Messages: 9}), msgSubResp(msg2), nil) + // Subscriber should terminate on permanent error. + stream2.Push(nil, nil, permanentErr) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream2) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + sub.Receiver.ValidateMsg(msg1) + sub.Receiver.ValidateMsg(msg2) + if gotErr := sub.FinalError(); !test.ErrorEqual(gotErr, permanentErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, permanentErr) + } +} + +func TestSubscribeStreamFlowControlBatching(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + msg1 := seqMsgWithOffsetAndSize(67, 200) + msg2 := seqMsgWithOffsetAndSize(68, 100) + serverErr := status.Error(codes.InvalidArgument, "verifies flow control received") + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), msgSubResp(msg1, msg2), nil) + // Batch flow control request expected. + stream.Push(flowControlSubReq(flowControlTokens{Bytes: 300, Messages: 2}), nil, serverErr) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + sub.Receiver.ValidateMsg(msg1) + sub.Receiver.ValidateMsg(msg2) + sub.sub.onAckAsync(msg1.SizeBytes) + sub.sub.onAckAsync(msg2.SizeBytes) + sub.sub.sendBatchFlowControl() + if gotErr := sub.FinalError(); !test.ErrorEqual(gotErr, serverErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, serverErr) + } +} + +func TestSubscribeStreamExpediteFlowControl(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + msg1 := seqMsgWithOffsetAndSize(67, 250) + // MaxOutstandingBytes = 1000, so msg2 pushes the pending flow control bytes + // over the expediteBatchRequestRatio=50% threshold in flowControlBatcher. + msg2 := seqMsgWithOffsetAndSize(68, 251) + serverErr := status.Error(codes.InvalidArgument, "verifies flow control received") + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), msgSubResp(msg1, msg2), nil) + // Batch flow control request expected. + stream.Push(flowControlSubReq(flowControlTokens{Bytes: 501, Messages: 2}), nil, serverErr) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + sub.Receiver.ValidateMsg(msg1) + sub.Receiver.ValidateMsg(msg2) + sub.sub.onAckAsync(msg1.SizeBytes) + sub.sub.onAckAsync(msg2.SizeBytes) + // Note: the ack for msg2 automatically triggers sending the flow control. + if gotErr := sub.FinalError(); !test.ErrorEqual(gotErr, serverErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, serverErr) + } +} + +func TestSubscribeStreamInvalidInitialResponse(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), seekResp(0), nil) // Seek instead of init response + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr, wantErr := sub.StartError(), errInvalidInitialSubscribeResponse; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Start got err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSubscribeStreamDuplicateInitialResponse(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), initSubResp(), nil) // Second initial response + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + if gotErr, wantErr := sub.FinalError(), errInvalidSubscribeResponse; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSubscribeStreamSpuriousSeekResponse(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), seekResp(1), nil) // Seek response with no seek request + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + if gotErr, wantErr := sub.FinalError(), errNoInFlightSeek; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSubscribeStreamNoMessages(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), msgSubResp(), nil) // No messages in response + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + if gotErr, wantErr := sub.FinalError(), errServerNoMessages; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSubscribeStreamMessagesOutOfOrder(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + msg1 := seqMsgWithOffsetAndSize(56, 100) + msg2 := seqMsgWithOffsetAndSize(55, 100) // Offset before msg1 + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), msgSubResp(msg1), nil) + stream.Push(nil, msgSubResp(msg2), nil) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + sub.Receiver.ValidateMsg(msg1) + if gotErr, msg := sub.FinalError(), "start offset = 55, expected >= 57"; !test.ErrorHasMsg(gotErr, msg) { + t.Errorf("Final err: (%v), want msg: %q", gotErr, msg) + } +} + +func TestSubscribeStreamFlowControlOverflow(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + acks := newAckTracker() + msg1 := seqMsgWithOffsetAndSize(56, 900) + msg2 := seqMsgWithOffsetAndSize(57, 101) // Overflows ReceiveSettings.MaxOutstandingBytes = 1000 + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initSubReq(subscription), initSubResp(), nil) + stream.Push(initFlowControlReq(), msgSubResp(msg1), nil) + stream.Push(nil, msgSubResp(msg2), nil) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSubscribeStream(t, subscription, testSubscriberSettings(), acks) + if gotErr := sub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + sub.Receiver.ValidateMsg(msg1) + if gotErr, wantErr := sub.FinalError(), errTokenCounterBytesNegative; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func newTestSinglePartitionSubscriber(t *testing.T, receiverFunc MessageReceiverFunc, subscription subscriptionPartition) *singlePartitionSubscriber { + ctx := context.Background() + subClient, err := newSubscriberClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + cursorClient, err := newCursorClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + + f := &singlePartitionSubscriberFactory{ + ctx: ctx, + subClient: subClient, + cursorClient: cursorClient, + settings: testSubscriberSettings(), + subscriptionPath: subscription.Path, + receiver: receiverFunc, + disableTasks: true, // Background tasks disabled to control event order + } + sub := f.New(subscription.Partition) + sub.Start() + return sub +} + +func TestSinglePartitionSubscriberStartStop(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + receiver := newTestMessageReceiver(t) + + verifiers := test.NewVerifiers(t) + + // Verifies the behavior of the subscribeStream and committer when they are + // stopped before any messages are received. + subStream := test.NewRPCVerifier(t) + subStream.Push(initSubReq(subscription), initSubResp(), nil) + barrier := subStream.PushWithBarrier(initFlowControlReq(), nil, nil) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, subStream) + + cmtStream := test.NewRPCVerifier(t) + cmtStream.Push(initCommitReq(subscription), initCommitResp(), nil) + verifiers.AddCommitStream(subscription.Path, subscription.Partition, cmtStream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSinglePartitionSubscriber(t, receiver.onMessages, subscription) + if gotErr := sub.WaitStarted(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + barrier.Release() // To ensure the test is deterministic (i.e. flow control req always received) + sub.Stop() + if gotErr := sub.WaitStopped(); gotErr != nil { + t.Errorf("Stop() got err: (%v)", gotErr) + } +} + +func TestSinglePartitionSubscriberSimpleMsgAck(t *testing.T) { + subscription := subscriptionPartition{"projects/123456/locations/us-central1-b/subscriptions/my-sub", 0} + receiver := newTestMessageReceiver(t) + msg1 := seqMsgWithOffsetAndSize(22, 100) + msg2 := seqMsgWithOffsetAndSize(23, 200) + + verifiers := test.NewVerifiers(t) + + subStream := test.NewRPCVerifier(t) + subStream.Push(initSubReq(subscription), initSubResp(), nil) + subStream.Push(initFlowControlReq(), msgSubResp(msg1, msg2), nil) + verifiers.AddSubscribeStream(subscription.Path, subscription.Partition, subStream) + + cmtStream := test.NewRPCVerifier(t) + cmtStream.Push(initCommitReq(subscription), initCommitResp(), nil) + cmtStream.Push(commitReq(24), commitResp(1), nil) + verifiers.AddCommitStream(subscription.Path, subscription.Partition, cmtStream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestSinglePartitionSubscriber(t, receiver.onMessages, subscription) + if gotErr := sub.WaitStarted(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + receiver.ValidateMsg(msg1).Ack() + receiver.ValidateMsg(msg2).Ack() + sub.Stop() + if gotErr := sub.WaitStopped(); gotErr != nil { + t.Errorf("Stop() got err: (%v)", gotErr) + } +} + +func newTestMultiPartitionSubscriber(t *testing.T, receiverFunc MessageReceiverFunc, subscriptionPath string, partitions []int) *multiPartitionSubscriber { + ctx := context.Background() + subClient, err := newSubscriberClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + cursorClient, err := newCursorClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + + f := &singlePartitionSubscriberFactory{ + ctx: ctx, + subClient: subClient, + cursorClient: cursorClient, + settings: testSubscriberSettings(), + subscriptionPath: subscriptionPath, + receiver: receiverFunc, + disableTasks: true, // Background tasks disabled to control event order + } + f.settings.Partitions = partitions + sub := newMultiPartitionSubscriber(f) + sub.Start() + return sub +} + +func TestMultiPartitionSubscriberMultipleMessages(t *testing.T) { + subscription := "projects/123456/locations/us-central1-b/subscriptions/my-sub" + receiver := newTestMessageReceiver(t) + msg1 := seqMsgWithOffsetAndSize(22, 100) + msg2 := seqMsgWithOffsetAndSize(23, 200) + msg3 := seqMsgWithOffsetAndSize(44, 100) + msg4 := seqMsgWithOffsetAndSize(45, 200) + + verifiers := test.NewVerifiers(t) + + // Partition 1 + subStream1 := test.NewRPCVerifier(t) + subStream1.Push(initSubReq(subscriptionPartition{Path: subscription, Partition: 1}), initSubResp(), nil) + subStream1.Push(initFlowControlReq(), msgSubResp(msg1), nil) + subStream1.Push(nil, msgSubResp(msg2), nil) + verifiers.AddSubscribeStream(subscription, 1, subStream1) + + cmtStream1 := test.NewRPCVerifier(t) + cmtStream1.Push(initCommitReq(subscriptionPartition{Path: subscription, Partition: 1}), initCommitResp(), nil) + cmtStream1.Push(commitReq(24), commitResp(1), nil) + verifiers.AddCommitStream(subscription, 1, cmtStream1) + + // Partition 2 + subStream2 := test.NewRPCVerifier(t) + subStream2.Push(initSubReq(subscriptionPartition{Path: subscription, Partition: 2}), initSubResp(), nil) + subStream2.Push(initFlowControlReq(), msgSubResp(msg3), nil) + subStream2.Push(nil, msgSubResp(msg4), nil) + verifiers.AddSubscribeStream(subscription, 2, subStream2) + + cmtStream2 := test.NewRPCVerifier(t) + cmtStream2.Push(initCommitReq(subscriptionPartition{Path: subscription, Partition: 2}), initCommitResp(), nil) + cmtStream2.Push(commitReq(46), commitResp(1), nil) + verifiers.AddCommitStream(subscription, 2, cmtStream2) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestMultiPartitionSubscriber(t, receiver.onMessages, subscription, []int{1, 2}) + if gotErr := sub.WaitStarted(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + receiver.ValidateMsgs([]*pb.SequencedMessage{msg1, msg2, msg3, msg4}) + sub.Stop() + if gotErr := sub.WaitStopped(); gotErr != nil { + t.Errorf("Stop() got err: (%v)", gotErr) + } +} + +func TestMultiPartitionSubscriberPermanentError(t *testing.T) { + subscription := "projects/123456/locations/us-central1-b/subscriptions/my-sub" + receiver := newTestMessageReceiver(t) + msg1 := seqMsgWithOffsetAndSize(22, 100) + msg2 := seqMsgWithOffsetAndSize(23, 200) + msg3 := seqMsgWithOffsetAndSize(44, 100) + serverErr := status.Error(codes.FailedPrecondition, "failed") + + verifiers := test.NewVerifiers(t) + + // Partition 1 + subStream1 := test.NewRPCVerifier(t) + subStream1.Push(initSubReq(subscriptionPartition{Path: subscription, Partition: 1}), initSubResp(), nil) + subStream1.Push(initFlowControlReq(), msgSubResp(msg1), nil) + msg2Barrier := subStream1.PushWithBarrier(nil, msgSubResp(msg2), nil) + verifiers.AddSubscribeStream(subscription, 1, subStream1) + + cmtStream1 := test.NewRPCVerifier(t) + cmtStream1.Push(initCommitReq(subscriptionPartition{Path: subscription, Partition: 1}), initCommitResp(), nil) + cmtStream1.Push(commitReq(23), commitResp(1), nil) + verifiers.AddCommitStream(subscription, 1, cmtStream1) + + // Partition 2 + subStream2 := test.NewRPCVerifier(t) + subStream2.Push(initSubReq(subscriptionPartition{Path: subscription, Partition: 2}), initSubResp(), nil) + subStream2.Push(initFlowControlReq(), msgSubResp(msg3), nil) + errorBarrier := subStream2.PushWithBarrier(nil, nil, serverErr) + verifiers.AddSubscribeStream(subscription, 2, subStream2) + + cmtStream2 := test.NewRPCVerifier(t) + cmtStream2.Push(initCommitReq(subscriptionPartition{Path: subscription, Partition: 2}), initCommitResp(), nil) + cmtStream2.Push(commitReq(45), commitResp(1), nil) + verifiers.AddCommitStream(subscription, 2, cmtStream2) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + sub := newTestMultiPartitionSubscriber(t, receiver.onMessages, subscription, []int{1, 2}) + if gotErr := sub.WaitStarted(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + receiver.ValidateMsgs([]*pb.SequencedMessage{msg1, msg3}) + errorBarrier.Release() // Send server error + if gotErr := sub.WaitStopped(); !test.ErrorEqual(gotErr, serverErr) { + t.Errorf("Final error got: (%v), want: (%v)", gotErr, serverErr) + } + + // Verify msg2 never received as subscriber has terminated. + msg2Barrier.Release() + receiver.VerifyNoMsgs() +} From f0748e541fc3fdd19c53ae839d6811abe45c7ef1 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Thu, 19 Nov 2020 06:38:07 -0800 Subject: [PATCH 07/15] feat(all): auto-regenerate gapics (#3229) This is an auto-generated regeneration of the gapic clients by cloud.google.com/go/internal/gapicgen. Once the corresponding genproto PR is submitted, genbot will update this PR with a newer dependency to the newer version of genproto and assign reviewers to this PR. If you have been assigned to review this PR, please: - Ensure that the version of genproto in go.mod has been updated. - Ensure that CI is passing. If it's failing, it requires your manual attention. - Approve and submit this PR if you believe it's ready to ship. Corresponding genproto PR: https://github.com/googleapis/go-genproto/pull/497 --- accessapproval/apiv1/doc.go | 2 +- analytics/admin/apiv1alpha/doc.go | 2 +- analytics/data/apiv1alpha/doc.go | 2 +- area120/tables/apiv1alpha1/doc.go | 2 +- asset/apiv1/doc.go | 2 +- asset/apiv1beta1/doc.go | 2 +- asset/apiv1p2beta1/doc.go | 2 +- asset/apiv1p5beta1/doc.go | 2 +- assuredworkloads/apiv1beta1/doc.go | 2 +- automl/apiv1/doc.go | 2 +- automl/apiv1beta1/doc.go | 2 +- bigquery/connection/apiv1/doc.go | 2 +- bigquery/connection/apiv1beta1/doc.go | 2 +- bigquery/datatransfer/apiv1/doc.go | 2 +- bigquery/go.mod | 4 ++-- bigquery/go.sum | 8 ++++---- bigquery/reservation/apiv1/doc.go | 2 +- bigquery/reservation/apiv1beta1/doc.go | 2 +- bigquery/storage/apiv1/doc.go | 2 +- bigquery/storage/apiv1alpha2/doc.go | 2 +- bigquery/storage/apiv1beta1/doc.go | 2 +- bigquery/storage/apiv1beta2/doc.go | 2 +- bigtable/go.mod | 4 ++-- bigtable/go.sum | 8 ++++---- billing/apiv1/doc.go | 2 +- billing/budgets/apiv1/doc.go | 2 +- billing/budgets/apiv1beta1/doc.go | 2 +- cloudbuild/apiv1/v2/doc.go | 2 +- cloudtasks/apiv2/doc.go | 2 +- cloudtasks/apiv2beta2/doc.go | 2 +- cloudtasks/apiv2beta3/doc.go | 2 +- container/apiv1/doc.go | 2 +- containeranalysis/apiv1beta1/doc.go | 2 +- datacatalog/apiv1/doc.go | 2 +- datacatalog/apiv1beta1/doc.go | 2 +- dataproc/apiv1/doc.go | 2 +- dataproc/apiv1beta2/doc.go | 2 +- datastore/admin/apiv1/doc.go | 2 +- datastore/go.mod | 4 ++-- datastore/go.sum | 8 ++++---- debugger/apiv2/doc.go | 2 +- dialogflow/apiv2/doc.go | 2 +- dialogflow/cx/apiv3beta1/doc.go | 2 +- dlp/apiv2/doc.go | 2 +- errorreporting/apiv1beta1/doc.go | 2 +- firestore/apiv1/admin/doc.go | 2 +- firestore/apiv1/doc.go | 2 +- firestore/go.mod | 4 ++-- firestore/go.sum | 8 ++++---- functions/apiv1/doc.go | 2 +- gaming/apiv1/doc.go | 2 +- gaming/apiv1beta/doc.go | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- iam/credentials/apiv1/doc.go | 2 +- internal/examples/fake/go.mod | 2 +- internal/examples/fake/go.sum | 4 ++-- internal/examples/mock/go.mod | 2 +- internal/examples/mock/go.sum | 4 ++-- internal/godocfx/go.mod | 2 +- internal/godocfx/go.sum | 8 ++++---- iot/apiv1/doc.go | 2 +- kms/apiv1/doc.go | 2 +- language/apiv1/doc.go | 2 +- language/apiv1beta2/doc.go | 2 +- logging/apiv2/doc.go | 2 +- logging/go.mod | 4 ++-- logging/go.sum | 8 ++++---- longrunning/autogen/doc.go | 2 +- managedidentities/apiv1/doc.go | 2 +- memcache/apiv1beta2/doc.go | 2 +- monitoring/apiv3/v2/doc.go | 2 +- monitoring/dashboard/apiv1/doc.go | 2 +- notebooks/apiv1beta1/doc.go | 2 +- osconfig/agentendpoint/apiv1/doc.go | 2 +- osconfig/agentendpoint/apiv1beta/doc.go | 2 +- osconfig/apiv1/doc.go | 2 +- osconfig/apiv1beta/doc.go | 2 +- oslogin/apiv1/doc.go | 2 +- oslogin/apiv1beta/doc.go | 2 +- phishingprotection/apiv1beta1/doc.go | 2 +- policytroubleshooter/apiv1/doc.go | 2 +- pubsub/apiv1/doc.go | 2 +- pubsub/go.mod | 4 ++-- pubsub/go.sum | 8 ++++---- pubsublite/apiv1/doc.go | 2 +- pubsublite/go.mod | 4 ++-- pubsublite/go.sum | 8 ++++---- recaptchaenterprise/apiv1/doc.go | 2 +- recaptchaenterprise/apiv1beta1/doc.go | 2 +- recommender/apiv1/doc.go | 2 +- recommender/apiv1beta1/doc.go | 2 +- redis/apiv1/doc.go | 2 +- redis/apiv1beta1/doc.go | 2 +- scheduler/apiv1/doc.go | 2 +- scheduler/apiv1beta1/doc.go | 2 +- secretmanager/apiv1/doc.go | 2 +- secretmanager/apiv1beta1/doc.go | 2 +- security/privateca/apiv1beta1/doc.go | 2 +- securitycenter/apiv1/doc.go | 2 +- securitycenter/apiv1beta1/doc.go | 2 +- securitycenter/apiv1p1beta1/doc.go | 2 +- securitycenter/settings/apiv1beta1/doc.go | 2 +- servicedirectory/apiv1beta1/doc.go | 2 +- spanner/admin/database/apiv1/doc.go | 2 +- spanner/admin/instance/apiv1/doc.go | 2 +- spanner/apiv1/doc.go | 2 +- spanner/go.mod | 4 ++-- spanner/go.sum | 8 ++++---- speech/apiv1/doc.go | 2 +- speech/apiv1p1beta1/doc.go | 2 +- storage/go.mod | 4 ++-- storage/go.sum | 8 ++++---- talent/apiv4/doc.go | 2 +- talent/apiv4beta1/doc.go | 2 +- texttospeech/apiv1/doc.go | 2 +- trace/apiv1/doc.go | 2 +- trace/apiv2/doc.go | 2 +- translate/apiv3/doc.go | 2 +- video/transcoder/apiv1beta1/doc.go | 2 +- videointelligence/apiv1/doc.go | 2 +- videointelligence/apiv1beta2/doc.go | 2 +- vision/apiv1/doc.go | 2 +- vision/apiv1p1beta1/doc.go | 2 +- webrisk/apiv1/doc.go | 2 +- webrisk/apiv1beta1/doc.go | 2 +- websecurityscanner/apiv1/doc.go | 2 +- workflows/apiv1beta/doc.go | 2 +- workflows/executions/apiv1beta/doc.go | 2 +- 129 files changed, 174 insertions(+), 174 deletions(-) diff --git a/accessapproval/apiv1/doc.go b/accessapproval/apiv1/doc.go index c48a786e168..c55b078a477 100644 --- a/accessapproval/apiv1/doc.go +++ b/accessapproval/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/analytics/admin/apiv1alpha/doc.go b/analytics/admin/apiv1alpha/doc.go index b1b1b68b236..3ab19023d6d 100644 --- a/analytics/admin/apiv1alpha/doc.go +++ b/analytics/admin/apiv1alpha/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/analytics/data/apiv1alpha/doc.go b/analytics/data/apiv1alpha/doc.go index f0ed3a15b5f..ab59980e69e 100644 --- a/analytics/data/apiv1alpha/doc.go +++ b/analytics/data/apiv1alpha/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/area120/tables/apiv1alpha1/doc.go b/area120/tables/apiv1alpha1/doc.go index 983f2b5158c..38c92b037e4 100644 --- a/area120/tables/apiv1alpha1/doc.go +++ b/area120/tables/apiv1alpha1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1/doc.go b/asset/apiv1/doc.go index b4276181139..9ae8235afa6 100644 --- a/asset/apiv1/doc.go +++ b/asset/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1beta1/doc.go b/asset/apiv1beta1/doc.go index 2164f0c4734..4ba076e6be7 100644 --- a/asset/apiv1beta1/doc.go +++ b/asset/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1p2beta1/doc.go b/asset/apiv1p2beta1/doc.go index 8d125657d69..be7cb94be83 100644 --- a/asset/apiv1p2beta1/doc.go +++ b/asset/apiv1p2beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/asset/apiv1p5beta1/doc.go b/asset/apiv1p5beta1/doc.go index 810143a7a86..a9516ec278c 100644 --- a/asset/apiv1p5beta1/doc.go +++ b/asset/apiv1p5beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/assuredworkloads/apiv1beta1/doc.go b/assuredworkloads/apiv1beta1/doc.go index 8d10a752f78..b9a3f619c4c 100644 --- a/assuredworkloads/apiv1beta1/doc.go +++ b/assuredworkloads/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/automl/apiv1/doc.go b/automl/apiv1/doc.go index 5c3d9d67ff8..da4ec7c788a 100644 --- a/automl/apiv1/doc.go +++ b/automl/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/automl/apiv1beta1/doc.go b/automl/apiv1beta1/doc.go index 47b1b7709d4..07ce9db85cc 100644 --- a/automl/apiv1beta1/doc.go +++ b/automl/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/connection/apiv1/doc.go b/bigquery/connection/apiv1/doc.go index f1041d39c9c..a95a392824b 100644 --- a/bigquery/connection/apiv1/doc.go +++ b/bigquery/connection/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/connection/apiv1beta1/doc.go b/bigquery/connection/apiv1beta1/doc.go index 5914d32f92f..85aa827dd59 100644 --- a/bigquery/connection/apiv1beta1/doc.go +++ b/bigquery/connection/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/datatransfer/apiv1/doc.go b/bigquery/datatransfer/apiv1/doc.go index 966cbbd3e11..45110fd5ecc 100644 --- a/bigquery/datatransfer/apiv1/doc.go +++ b/bigquery/datatransfer/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/go.mod b/bigquery/go.mod index 92bed66df5c..9a84fc5eeaf 100644 --- a/bigquery/go.mod +++ b/bigquery/go.mod @@ -8,8 +8,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/bigquery/go.sum b/bigquery/go.sum index 4d90c55b727..ed3e1749023 100644 --- a/bigquery/go.sum +++ b/bigquery/go.sum @@ -401,8 +401,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -491,8 +491,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= diff --git a/bigquery/reservation/apiv1/doc.go b/bigquery/reservation/apiv1/doc.go index 5d94f650ad8..d140b84ce3f 100644 --- a/bigquery/reservation/apiv1/doc.go +++ b/bigquery/reservation/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/reservation/apiv1beta1/doc.go b/bigquery/reservation/apiv1beta1/doc.go index efc2ceaea25..1e85e6b7d64 100644 --- a/bigquery/reservation/apiv1beta1/doc.go +++ b/bigquery/reservation/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1/doc.go b/bigquery/storage/apiv1/doc.go index 841d44f04fa..1798961dbdd 100644 --- a/bigquery/storage/apiv1/doc.go +++ b/bigquery/storage/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1alpha2/doc.go b/bigquery/storage/apiv1alpha2/doc.go index c352217e953..b9016f8eb4d 100644 --- a/bigquery/storage/apiv1alpha2/doc.go +++ b/bigquery/storage/apiv1alpha2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1beta1/doc.go b/bigquery/storage/apiv1beta1/doc.go index 9146738e38f..d199f5fe092 100644 --- a/bigquery/storage/apiv1beta1/doc.go +++ b/bigquery/storage/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigquery/storage/apiv1beta2/doc.go b/bigquery/storage/apiv1beta2/doc.go index 6c3a7d267b2..7bcbee94b5b 100644 --- a/bigquery/storage/apiv1beta2/doc.go +++ b/bigquery/storage/apiv1beta2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/bigtable/go.mod b/bigtable/go.mod index c9dd5697393..9b45af82918 100644 --- a/bigtable/go.mod +++ b/bigtable/go.mod @@ -9,9 +9,9 @@ require ( github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 rsc.io/binaryregexp v0.2.0 ) diff --git a/bigtable/go.sum b/bigtable/go.sum index 6af98194bdd..8a0c8c5bf2c 100644 --- a/bigtable/go.sum +++ b/bigtable/go.sum @@ -411,8 +411,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -505,8 +505,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= diff --git a/billing/apiv1/doc.go b/billing/apiv1/doc.go index b1d0fb35729..cef2010d790 100644 --- a/billing/apiv1/doc.go +++ b/billing/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/billing/budgets/apiv1/doc.go b/billing/budgets/apiv1/doc.go index a9494438e2f..21319c9b8a6 100644 --- a/billing/budgets/apiv1/doc.go +++ b/billing/budgets/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/billing/budgets/apiv1beta1/doc.go b/billing/budgets/apiv1beta1/doc.go index 6d6a4a402a7..a5d8344f4a7 100644 --- a/billing/budgets/apiv1beta1/doc.go +++ b/billing/budgets/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudbuild/apiv1/v2/doc.go b/cloudbuild/apiv1/v2/doc.go index 5544d3bdf29..3d8bb733181 100644 --- a/cloudbuild/apiv1/v2/doc.go +++ b/cloudbuild/apiv1/v2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2/doc.go b/cloudtasks/apiv2/doc.go index 73596fe8a0b..ccdcf659632 100644 --- a/cloudtasks/apiv2/doc.go +++ b/cloudtasks/apiv2/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2beta2/doc.go b/cloudtasks/apiv2beta2/doc.go index ca91a3ba953..a1a777a48a7 100644 --- a/cloudtasks/apiv2beta2/doc.go +++ b/cloudtasks/apiv2beta2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/cloudtasks/apiv2beta3/doc.go b/cloudtasks/apiv2beta3/doc.go index 79ed38aa6c9..f9fa7fdbd50 100644 --- a/cloudtasks/apiv2beta3/doc.go +++ b/cloudtasks/apiv2beta3/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/container/apiv1/doc.go b/container/apiv1/doc.go index fddbf232a67..18f094a208e 100644 --- a/container/apiv1/doc.go +++ b/container/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/containeranalysis/apiv1beta1/doc.go b/containeranalysis/apiv1beta1/doc.go index fad61b218d2..0935f46cb3f 100644 --- a/containeranalysis/apiv1beta1/doc.go +++ b/containeranalysis/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datacatalog/apiv1/doc.go b/datacatalog/apiv1/doc.go index 8b9de2d08bd..fae3cd44539 100644 --- a/datacatalog/apiv1/doc.go +++ b/datacatalog/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datacatalog/apiv1beta1/doc.go b/datacatalog/apiv1beta1/doc.go index e5631ed2e30..701cb5b00a6 100644 --- a/datacatalog/apiv1beta1/doc.go +++ b/datacatalog/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dataproc/apiv1/doc.go b/dataproc/apiv1/doc.go index 9247ce66ab5..b85109a3705 100644 --- a/dataproc/apiv1/doc.go +++ b/dataproc/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dataproc/apiv1beta2/doc.go b/dataproc/apiv1beta2/doc.go index 5fb700f25f4..a22989e6b8b 100644 --- a/dataproc/apiv1beta2/doc.go +++ b/dataproc/apiv1beta2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datastore/admin/apiv1/doc.go b/datastore/admin/apiv1/doc.go index 360f7a21d4b..4a80e590d02 100644 --- a/datastore/admin/apiv1/doc.go +++ b/datastore/admin/apiv1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/datastore/go.mod b/datastore/go.mod index 0806fec1875..0b249a98594 100644 --- a/datastore/go.mod +++ b/datastore/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/datastore/go.sum b/datastore/go.sum index 07eac46bbdb..e1cc2a5f693 100644 --- a/datastore/go.sum +++ b/datastore/go.sum @@ -404,8 +404,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -497,8 +497,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/debugger/apiv2/doc.go b/debugger/apiv2/doc.go index 6947235b468..4caa032af03 100644 --- a/debugger/apiv2/doc.go +++ b/debugger/apiv2/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dialogflow/apiv2/doc.go b/dialogflow/apiv2/doc.go index 4d2c0f6de22..9908061838d 100644 --- a/dialogflow/apiv2/doc.go +++ b/dialogflow/apiv2/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dialogflow/cx/apiv3beta1/doc.go b/dialogflow/cx/apiv3beta1/doc.go index fd0d3cf7545..c175b1fca0a 100644 --- a/dialogflow/cx/apiv3beta1/doc.go +++ b/dialogflow/cx/apiv3beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/dlp/apiv2/doc.go b/dlp/apiv2/doc.go index 0a6c951c70e..5c97e61c00d 100644 --- a/dlp/apiv2/doc.go +++ b/dlp/apiv2/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/errorreporting/apiv1beta1/doc.go b/errorreporting/apiv1beta1/doc.go index e27a7cd90d7..5cbd2988bdf 100644 --- a/errorreporting/apiv1beta1/doc.go +++ b/errorreporting/apiv1beta1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/apiv1/admin/doc.go b/firestore/apiv1/admin/doc.go index ea42b0ce27c..eaa25aeb5aa 100644 --- a/firestore/apiv1/admin/doc.go +++ b/firestore/apiv1/admin/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/apiv1/doc.go b/firestore/apiv1/doc.go index 835350685d4..b8209031a9d 100644 --- a/firestore/apiv1/doc.go +++ b/firestore/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/firestore/go.mod b/firestore/go.mod index 789ebc17f6d..179c587d396 100644 --- a/firestore/go.mod +++ b/firestore/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/firestore/go.sum b/firestore/go.sum index 07aaeacef9c..fbcb141a65a 100644 --- a/firestore/go.sum +++ b/firestore/go.sum @@ -406,8 +406,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -469,8 +469,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/functions/apiv1/doc.go b/functions/apiv1/doc.go index f4aceb6d71b..3cec40097e8 100644 --- a/functions/apiv1/doc.go +++ b/functions/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/gaming/apiv1/doc.go b/gaming/apiv1/doc.go index 939af3c2eaf..336e4909c78 100644 --- a/gaming/apiv1/doc.go +++ b/gaming/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/gaming/apiv1beta/doc.go b/gaming/apiv1beta/doc.go index ec8ae4c309c..e5e9a268eba 100644 --- a/gaming/apiv1beta/doc.go +++ b/gaming/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/go.mod b/go.mod index 115ea089eb4..b09aedfce20 100644 --- a/go.mod +++ b/go.mod @@ -16,8 +16,8 @@ require ( golang.org/x/net v0.0.0-20201110031124-69a78807bb2b golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/text v0.3.4 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index 836f6211872..ea567ca6a70 100644 --- a/go.sum +++ b/go.sum @@ -397,8 +397,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d h1:szSOL78iTCl0LF1AMjhSWJj golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -480,8 +480,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c h1:Lq4llNryJoaVFRm google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= diff --git a/iam/credentials/apiv1/doc.go b/iam/credentials/apiv1/doc.go index 90d56d22ac8..ad7a3d555ce 100644 --- a/iam/credentials/apiv1/doc.go +++ b/iam/credentials/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/internal/examples/fake/go.mod b/internal/examples/fake/go.mod index 57bb3237258..9fae0975721 100644 --- a/internal/examples/fake/go.mod +++ b/internal/examples/fake/go.mod @@ -7,6 +7,6 @@ require ( github.com/golang/protobuf v1.4.3 // indirect golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.32.0 ) diff --git a/internal/examples/fake/go.sum b/internal/examples/fake/go.sum index 3a88d01246a..1b01e6e8ecb 100644 --- a/internal/examples/fake/go.sum +++ b/internal/examples/fake/go.sum @@ -353,8 +353,8 @@ google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201002142447-3860012362da h1:DTQYk4u7nICKkkVZsBv0/0po0ChISxAJ5CTAfUhO0PQ= google.golang.org/genproto v0.0.0-20201002142447-3860012362da/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/internal/examples/mock/go.mod b/internal/examples/mock/go.mod index a4149ded855..f8846228550 100644 --- a/internal/examples/mock/go.mod +++ b/internal/examples/mock/go.mod @@ -8,7 +8,7 @@ require ( github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.31.1 // indirect google.golang.org/protobuf v1.25.0 // indirect ) diff --git a/internal/examples/mock/go.sum b/internal/examples/mock/go.sum index 9ae7d1382a5..68dc9e9785a 100644 --- a/internal/examples/mock/go.sum +++ b/internal/examples/mock/go.sum @@ -76,8 +76,8 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= diff --git a/internal/godocfx/go.mod b/internal/godocfx/go.mod index 1e9cad2a08a..f2608ad5e03 100644 --- a/internal/godocfx/go.mod +++ b/internal/godocfx/go.mod @@ -8,7 +8,7 @@ require ( cloud.google.com/go/datastore v1.1.0 cloud.google.com/go/storage v1.11.0 github.com/kr/pretty v0.2.1 // indirect - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 gopkg.in/yaml.v2 v2.3.0 ) diff --git a/internal/godocfx/go.sum b/internal/godocfx/go.sum index 048ea4e2750..0ce120316dc 100644 --- a/internal/godocfx/go.sum +++ b/internal/godocfx/go.sum @@ -243,8 +243,8 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200827163409-021d7c6f1ec3/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -295,8 +295,8 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200827165113-ac2560b5e952/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/iot/apiv1/doc.go b/iot/apiv1/doc.go index 92bc48b967d..9a2794a36d6 100644 --- a/iot/apiv1/doc.go +++ b/iot/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/kms/apiv1/doc.go b/kms/apiv1/doc.go index 166505d33d9..46a99f53b92 100644 --- a/kms/apiv1/doc.go +++ b/kms/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/language/apiv1/doc.go b/language/apiv1/doc.go index aed5610f028..9f6e7d00479 100644 --- a/language/apiv1/doc.go +++ b/language/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/language/apiv1beta2/doc.go b/language/apiv1beta2/doc.go index ef3a80b4f7e..fdc6627a8e2 100644 --- a/language/apiv1beta2/doc.go +++ b/language/apiv1beta2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/logging/apiv2/doc.go b/logging/apiv2/doc.go index b2d8dde6030..02cb5da4877 100644 --- a/logging/apiv2/doc.go +++ b/logging/apiv2/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/logging/go.mod b/logging/go.mod index 10e75223700..1e4911a8924 100644 --- a/logging/go.mod +++ b/logging/go.mod @@ -10,8 +10,8 @@ require ( github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/logging/go.sum b/logging/go.sum index 194d096789b..648dac0be88 100644 --- a/logging/go.sum +++ b/logging/go.sum @@ -414,8 +414,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -477,8 +477,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/longrunning/autogen/doc.go b/longrunning/autogen/doc.go index ecc548e98b7..abaffd8cba0 100644 --- a/longrunning/autogen/doc.go +++ b/longrunning/autogen/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/managedidentities/apiv1/doc.go b/managedidentities/apiv1/doc.go index a4d97d27a1d..0751b7b5989 100644 --- a/managedidentities/apiv1/doc.go +++ b/managedidentities/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/memcache/apiv1beta2/doc.go b/memcache/apiv1beta2/doc.go index 6bf32c8a4be..cd283bc86ff 100644 --- a/memcache/apiv1beta2/doc.go +++ b/memcache/apiv1beta2/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/monitoring/apiv3/v2/doc.go b/monitoring/apiv3/v2/doc.go index 2d07e9b79bd..cb156836933 100644 --- a/monitoring/apiv3/v2/doc.go +++ b/monitoring/apiv3/v2/doc.go @@ -53,7 +53,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/monitoring/dashboard/apiv1/doc.go b/monitoring/dashboard/apiv1/doc.go index 87008baaffd..b51a883654e 100644 --- a/monitoring/dashboard/apiv1/doc.go +++ b/monitoring/dashboard/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/notebooks/apiv1beta1/doc.go b/notebooks/apiv1beta1/doc.go index 36b342e2aeb..f3c392f512b 100644 --- a/notebooks/apiv1beta1/doc.go +++ b/notebooks/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/agentendpoint/apiv1/doc.go b/osconfig/agentendpoint/apiv1/doc.go index ae4cd6bf9d8..818f1cba7f4 100644 --- a/osconfig/agentendpoint/apiv1/doc.go +++ b/osconfig/agentendpoint/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/agentendpoint/apiv1beta/doc.go b/osconfig/agentendpoint/apiv1beta/doc.go index b532d640ce6..fab85080803 100644 --- a/osconfig/agentendpoint/apiv1beta/doc.go +++ b/osconfig/agentendpoint/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/apiv1/doc.go b/osconfig/apiv1/doc.go index 93a61105ce7..dfd69cfe0bb 100644 --- a/osconfig/apiv1/doc.go +++ b/osconfig/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/osconfig/apiv1beta/doc.go b/osconfig/apiv1beta/doc.go index fa1d3ccfc98..339f187015d 100644 --- a/osconfig/apiv1beta/doc.go +++ b/osconfig/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/oslogin/apiv1/doc.go b/oslogin/apiv1/doc.go index 9bccdd0a340..7a2eb46c3ad 100644 --- a/oslogin/apiv1/doc.go +++ b/oslogin/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/oslogin/apiv1beta/doc.go b/oslogin/apiv1beta/doc.go index ee3ee0e9567..05383ced785 100644 --- a/oslogin/apiv1beta/doc.go +++ b/oslogin/apiv1beta/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/phishingprotection/apiv1beta1/doc.go b/phishingprotection/apiv1beta1/doc.go index f116ad9e4b3..0bb81aa7cb9 100644 --- a/phishingprotection/apiv1beta1/doc.go +++ b/phishingprotection/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/policytroubleshooter/apiv1/doc.go b/policytroubleshooter/apiv1/doc.go index e2cc1a4a088..9c59e3ef39c 100644 --- a/policytroubleshooter/apiv1/doc.go +++ b/policytroubleshooter/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsub/apiv1/doc.go b/pubsub/apiv1/doc.go index 81bf1be3bf4..ec9df35dac7 100644 --- a/pubsub/apiv1/doc.go +++ b/pubsub/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsub/go.mod b/pubsub/go.mod index 1c6cbb25370..ff351509cf3 100644 --- a/pubsub/go.mod +++ b/pubsub/go.mod @@ -11,8 +11,8 @@ require ( golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/pubsub/go.sum b/pubsub/go.sum index 11de52bd003..e44b4e14b36 100644 --- a/pubsub/go.sum +++ b/pubsub/go.sum @@ -347,8 +347,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -410,8 +410,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/pubsublite/apiv1/doc.go b/pubsublite/apiv1/doc.go index 541fdf0bbcc..e2de6d4317f 100644 --- a/pubsublite/apiv1/doc.go +++ b/pubsublite/apiv1/doc.go @@ -44,7 +44,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/pubsublite/go.mod b/pubsublite/go.mod index 32e41180b0b..09727ba1986 100644 --- a/pubsublite/go.mod +++ b/pubsublite/go.mod @@ -7,8 +7,8 @@ require ( github.com/golang/protobuf v1.4.3 github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/pubsublite/go.sum b/pubsublite/go.sum index b47162093a1..bd119db5e1d 100644 --- a/pubsublite/go.sum +++ b/pubsublite/go.sum @@ -299,8 +299,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -362,8 +362,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/recaptchaenterprise/apiv1/doc.go b/recaptchaenterprise/apiv1/doc.go index 04e68a6cd86..d4c84e3efab 100644 --- a/recaptchaenterprise/apiv1/doc.go +++ b/recaptchaenterprise/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recaptchaenterprise/apiv1beta1/doc.go b/recaptchaenterprise/apiv1beta1/doc.go index 09b0b891b90..f90d75ea364 100644 --- a/recaptchaenterprise/apiv1beta1/doc.go +++ b/recaptchaenterprise/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recommender/apiv1/doc.go b/recommender/apiv1/doc.go index 4ec48c434e0..010352c6b3d 100644 --- a/recommender/apiv1/doc.go +++ b/recommender/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/recommender/apiv1beta1/doc.go b/recommender/apiv1beta1/doc.go index 98d11840ab3..ee02a8e8bd6 100644 --- a/recommender/apiv1beta1/doc.go +++ b/recommender/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/redis/apiv1/doc.go b/redis/apiv1/doc.go index c04e6209c06..e81c7d36824 100644 --- a/redis/apiv1/doc.go +++ b/redis/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/redis/apiv1beta1/doc.go b/redis/apiv1beta1/doc.go index 0f8e101495a..c45aac4646c 100644 --- a/redis/apiv1beta1/doc.go +++ b/redis/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/scheduler/apiv1/doc.go b/scheduler/apiv1/doc.go index 8661ef974fb..c7ad6812ef7 100644 --- a/scheduler/apiv1/doc.go +++ b/scheduler/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/scheduler/apiv1beta1/doc.go b/scheduler/apiv1beta1/doc.go index 76cdf07ab40..bce63631a4d 100644 --- a/scheduler/apiv1beta1/doc.go +++ b/scheduler/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/secretmanager/apiv1/doc.go b/secretmanager/apiv1/doc.go index f7448c1d971..6188408b272 100644 --- a/secretmanager/apiv1/doc.go +++ b/secretmanager/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/secretmanager/apiv1beta1/doc.go b/secretmanager/apiv1beta1/doc.go index 793621e6cf1..f23c361b6d3 100644 --- a/secretmanager/apiv1beta1/doc.go +++ b/secretmanager/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/security/privateca/apiv1beta1/doc.go b/security/privateca/apiv1beta1/doc.go index 11ab7aa925c..cf4a311347a 100644 --- a/security/privateca/apiv1beta1/doc.go +++ b/security/privateca/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1/doc.go b/securitycenter/apiv1/doc.go index afda5d18139..d6008b70332 100644 --- a/securitycenter/apiv1/doc.go +++ b/securitycenter/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1beta1/doc.go b/securitycenter/apiv1beta1/doc.go index a83049384f3..33431ee335c 100644 --- a/securitycenter/apiv1beta1/doc.go +++ b/securitycenter/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/apiv1p1beta1/doc.go b/securitycenter/apiv1p1beta1/doc.go index 0ddacd6806b..cab13d5b919 100644 --- a/securitycenter/apiv1p1beta1/doc.go +++ b/securitycenter/apiv1p1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/securitycenter/settings/apiv1beta1/doc.go b/securitycenter/settings/apiv1beta1/doc.go index 990c3535143..a7211690dc0 100644 --- a/securitycenter/settings/apiv1beta1/doc.go +++ b/securitycenter/settings/apiv1beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/servicedirectory/apiv1beta1/doc.go b/servicedirectory/apiv1beta1/doc.go index 02966b02635..3c588b84a52 100644 --- a/servicedirectory/apiv1beta1/doc.go +++ b/servicedirectory/apiv1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/admin/database/apiv1/doc.go b/spanner/admin/database/apiv1/doc.go index 4c207c83fc4..47535dfd863 100644 --- a/spanner/admin/database/apiv1/doc.go +++ b/spanner/admin/database/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/admin/instance/apiv1/doc.go b/spanner/admin/instance/apiv1/doc.go index b0b242e6e6a..938d22b8f47 100644 --- a/spanner/admin/instance/apiv1/doc.go +++ b/spanner/admin/instance/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/apiv1/doc.go b/spanner/apiv1/doc.go index 8928c787d4a..c8e4c493ee1 100644 --- a/spanner/apiv1/doc.go +++ b/spanner/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/spanner/go.mod b/spanner/go.mod index f8af1964e8b..7400a6c4c2e 100644 --- a/spanner/go.mod +++ b/spanner/go.mod @@ -8,10 +8,10 @@ require ( github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 go.opencensus.io v0.22.5 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 google.golang.org/protobuf v1.25.0 ) diff --git a/spanner/go.sum b/spanner/go.sum index d70b8fed595..2145815350e 100644 --- a/spanner/go.sum +++ b/spanner/go.sum @@ -404,8 +404,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -467,8 +467,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/speech/apiv1/doc.go b/speech/apiv1/doc.go index 5cec10edaca..a3a34630a6e 100644 --- a/speech/apiv1/doc.go +++ b/speech/apiv1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/speech/apiv1p1beta1/doc.go b/speech/apiv1p1beta1/doc.go index 6b01a985886..ab8a699200e 100644 --- a/speech/apiv1p1beta1/doc.go +++ b/speech/apiv1p1beta1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/storage/go.mod b/storage/go.mod index a8e657854a7..38d4ac7af9b 100644 --- a/storage/go.mod +++ b/storage/go.mod @@ -8,8 +8,8 @@ require ( github.com/google/go-cmp v0.5.3 github.com/googleapis/gax-go/v2 v2.0.5 golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58 - golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 // indirect + golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 // indirect google.golang.org/api v0.35.0 - google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 + google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 ) diff --git a/storage/go.sum b/storage/go.sum index e6bfe9c50b4..910735e66d8 100644 --- a/storage/go.sum +++ b/storage/go.sum @@ -391,8 +391,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10 h1:epqY6OjPdDktZ8Cbnv7rUhy89e44hYWhxmhdecJr4cg= -golang.org/x/tools v0.0.0-20201117021029-3c3a81204b10/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0 h1:26vapYZ9m+DJd68m3DCFP/swNNErXAU7tOMFG7NyUuM= +golang.org/x/tools v0.0.0-20201119132711-4783bc9bebf0/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -454,8 +454,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1 h1:EVow1AaDgdoMjdO64/fntn4+RGTVor8YE/mkmIYsqFM= -google.golang.org/genproto v0.0.0-20201117123952-62d171c70ae1/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 h1:Rt0FRalMgdSlXAVJvX4pr65KfqaxHXSLkSJRD9pw6g0= +google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/talent/apiv4/doc.go b/talent/apiv4/doc.go index 7967343bbd0..2e599867022 100644 --- a/talent/apiv4/doc.go +++ b/talent/apiv4/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/talent/apiv4beta1/doc.go b/talent/apiv4beta1/doc.go index 22f0a71fbb3..9f6b39c1acb 100644 --- a/talent/apiv4beta1/doc.go +++ b/talent/apiv4beta1/doc.go @@ -51,7 +51,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/texttospeech/apiv1/doc.go b/texttospeech/apiv1/doc.go index 75beaaecd42..e1f085189d1 100644 --- a/texttospeech/apiv1/doc.go +++ b/texttospeech/apiv1/doc.go @@ -49,7 +49,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/trace/apiv1/doc.go b/trace/apiv1/doc.go index d516a894d0b..87e02392c93 100644 --- a/trace/apiv1/doc.go +++ b/trace/apiv1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/trace/apiv2/doc.go b/trace/apiv2/doc.go index d604b8d2b84..eefc9d3f5c1 100644 --- a/trace/apiv2/doc.go +++ b/trace/apiv2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/translate/apiv3/doc.go b/translate/apiv3/doc.go index e492bb30719..92137268e2e 100644 --- a/translate/apiv3/doc.go +++ b/translate/apiv3/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/video/transcoder/apiv1beta1/doc.go b/video/transcoder/apiv1beta1/doc.go index 5206a8e00b5..f1e78ee1aed 100644 --- a/video/transcoder/apiv1beta1/doc.go +++ b/video/transcoder/apiv1beta1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/videointelligence/apiv1/doc.go b/videointelligence/apiv1/doc.go index 2bab2f8b5f5..879209d1626 100644 --- a/videointelligence/apiv1/doc.go +++ b/videointelligence/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/videointelligence/apiv1beta2/doc.go b/videointelligence/apiv1beta2/doc.go index c497793b6a3..57ccbc3cc18 100644 --- a/videointelligence/apiv1beta2/doc.go +++ b/videointelligence/apiv1beta2/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/vision/apiv1/doc.go b/vision/apiv1/doc.go index eb27b71b4b0..333f078ab3f 100644 --- a/vision/apiv1/doc.go +++ b/vision/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/vision/apiv1p1beta1/doc.go b/vision/apiv1p1beta1/doc.go index 4c3115c4a35..9e24fb81894 100644 --- a/vision/apiv1p1beta1/doc.go +++ b/vision/apiv1p1beta1/doc.go @@ -52,7 +52,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/webrisk/apiv1/doc.go b/webrisk/apiv1/doc.go index 1e796e3a6a4..13fb565a8fd 100644 --- a/webrisk/apiv1/doc.go +++ b/webrisk/apiv1/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/webrisk/apiv1beta1/doc.go b/webrisk/apiv1beta1/doc.go index ecb2b421290..95103a35973 100644 --- a/webrisk/apiv1beta1/doc.go +++ b/webrisk/apiv1beta1/doc.go @@ -48,7 +48,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/websecurityscanner/apiv1/doc.go b/websecurityscanner/apiv1/doc.go index ff11e71bb31..f8e51a9dd89 100644 --- a/websecurityscanner/apiv1/doc.go +++ b/websecurityscanner/apiv1/doc.go @@ -50,7 +50,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/workflows/apiv1beta/doc.go b/workflows/apiv1beta/doc.go index 8baac774c68..0413da6c4ef 100644 --- a/workflows/apiv1beta/doc.go +++ b/workflows/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) diff --git a/workflows/executions/apiv1beta/doc.go b/workflows/executions/apiv1beta/doc.go index 59930cb804c..37cd8798f84 100644 --- a/workflows/executions/apiv1beta/doc.go +++ b/workflows/executions/apiv1beta/doc.go @@ -46,7 +46,7 @@ import ( type clientHookParams struct{} type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error) -const versionClient = "20201117" +const versionClient = "20201119" func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { out, _ := metadata.FromOutgoingContext(ctx) From 42d2ef07fcd0657bd73663618c3a2a6acbf19661 Mon Sep 17 00:00:00 2001 From: Christopher Wilcox Date: Thu, 19 Nov 2020 11:58:08 -0800 Subject: [PATCH 08/15] docs: expand on developer environment setup (#3208) I just walked through setting up the development environment. I fixed a few small typos, but also tried to add my notes for what I saved in `.zshrc`. I figure most contributors are doing a similar thing? --- CONTRIBUTING.md | 50 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e1398722c3e..6ca285bee22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -129,10 +129,13 @@ project's service account. (e.g. doorway-cliff-677) for the Firestore project. - `GCLOUD_TESTS_GOLANG_FIRESTORE_KEY`: The path to the JSON key file of the Firestore project's service account. +- `GCLOUD_TESTS_API_KEY`: API key for using the Translate API created above. + +As part of the setup that follows, the following variables will be configured: + - `GCLOUD_TESTS_GOLANG_KEYRING`: The full name of the keyring for the tests, in the form "projects/P/locations/L/keyRings/R". The creation of this is described below. -- `GCLOUD_TESTS_API_KEY`: API key for using the Translate API. - `GCLOUD_TESTS_GOLANG_ZONE`: Compute Engine zone. Install the [gcloud command-line tool][gcloudcli] to your machine and use it to @@ -159,7 +162,7 @@ $ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID # Creates a PubSub topic for integration tests of storage notifications. $ gcloud beta pubsub topics create go-storage-notification-test # Next, go to the Pub/Sub dashboard in GCP console. Authorize the user -# "service-@gs-project-accounts.iam.gserviceaccount.com" +# "service-@gs-project-accounts.iam.gserviceaccount.com" # as a publisher to that topic. # Creates a Spanner instance for the spanner integration tests. @@ -178,7 +181,38 @@ $ gcloud kms keys create key2 --keyring $MY_KEYRING --location $MY_LOCATION --pu # Sets the GCLOUD_TESTS_GOLANG_KEYRING environment variable. $ export GCLOUD_TESTS_GOLANG_KEYRING=projects/$GCLOUD_TESTS_GOLANG_PROJECT_ID/locations/$MY_LOCATION/keyRings/$MY_KEYRING # Authorizes Google Cloud Storage to encrypt and decrypt using key1. -gsutil kms authorize -p $GCLOUD_TESTS_GOLANG_PROJECT_ID -k $GCLOUD_TESTS_GOLANG_KEYRING/cryptoKeys/key1 +$ gsutil kms authorize -p $GCLOUD_TESTS_GOLANG_PROJECT_ID -k $GCLOUD_TESTS_GOLANG_KEYRING/cryptoKeys/key1 +``` + +It may be useful to add exports to your shell initialization for future use. +For instance, in `.zshrc`: + +```sh +#### START GO SDK Test Variables +# Developers Console project's ID (e.g. bamboo-shift-455) for the general project. +export GCLOUD_TESTS_GOLANG_PROJECT_ID=your-project + +# The path to the JSON key file of the general project's service account. +export GCLOUD_TESTS_GOLANG_KEY=~/directory/your-project-abcd1234.json + +# Developers Console project's ID (e.g. doorway-cliff-677) for the Firestore project. +export GCLOUD_TESTS_GOLANG_FIRESTORE_PROJECT_ID=your-firestore-project + +# The path to the JSON key file of the Firestore project's service account. +export GCLOUD_TESTS_GOLANG_FIRESTORE_KEY=~/directory/your-firestore-project-abcd1234.json + +# The full name of the keyring for the tests, in the form "projects/P/locations/L/keyRings/R". +# The creation of this is described below. +export MY_KEYRING=my-golang-sdk-test +export MY_LOCATION=global +export GCLOUD_TESTS_GOLANG_KEYRING=projects/$GCLOUD_TESTS_GOLANG_PROJECT_ID/locations/$MY_LOCATION/keyRings/$MY_KEYRING + +# API key for using the Translate API. +export GCLOUD_TESTS_API_KEY=abcdefghijk123456789 + +# Compute Engine zone. (https://cloud.google.com/compute/docs/regions-zones) +export GCLOUD_TESTS_GOLANG_ZONE=your-chosen-region +#### END GO SDK Test Variables ``` #### Running @@ -187,7 +221,15 @@ Once you've done the necessary setup, you can run the integration tests by running: ``` sh -$ go test -v cloud.google.com/go/... +$ go test -v ./... +``` + +Note that the above command will not run the tests in other modules. To run +tests on other modules, first navigate to the appropriate +subdirectory. For instance, to run only the tests for datastore: +``` sh +$ cd datastore +$ go test -v ./... ``` #### Replay From a781a3ad0c626fc0a7aff0ce33b1ef0830ee2259 Mon Sep 17 00:00:00 2001 From: tmdiep Date: Fri, 20 Nov 2020 08:08:27 +1100 Subject: [PATCH 09/15] fix(pubsub): Remove NewMessage and NewPublishResult (#3232) Rolls back functions that we have decided not to expose to users. --- pubsub/message.go | 6 ------ pubsub/topic.go | 7 ------- 2 files changed, 13 deletions(-) diff --git a/pubsub/message.go b/pubsub/message.go index 54be363eefa..c09a7e51c40 100644 --- a/pubsub/message.go +++ b/pubsub/message.go @@ -61,12 +61,6 @@ type Message struct { ackh ackHandler } -// NewMessage creates a message with a custom ack/nack handler, which should not -// be nil. -func NewMessage(ackh ackHandler) *Message { - return &Message{ackh: ackh} -} - func toMessage(resp *pb.ReceivedMessage) (*Message, error) { if resp.Message == nil { return &Message{ackh: &psAckHandler{ackID: resp.AckId}}, nil diff --git a/pubsub/topic.go b/pubsub/topic.go index 1dd50c00291..07e392e0869 100644 --- a/pubsub/topic.go +++ b/pubsub/topic.go @@ -470,13 +470,6 @@ type PublishResult struct { err error } -// NewPublishResult returns the set() function to enable callers from outside -// this package to store and call it (e.g. unit tests). -func NewPublishResult() (*PublishResult, func(string, error)) { - result := &PublishResult{ready: make(chan struct{})} - return result, result.set -} - // Ready returns a channel that is closed when the result is ready. // When the Ready channel is closed, Get is guaranteed not to block. func (r *PublishResult) Ready() <-chan struct{} { return r.ready } From ea3cde55ad3d8d843bce8d023747cf69552850b5 Mon Sep 17 00:00:00 2001 From: shollyman Date: Thu, 19 Nov 2020 14:18:03 -0800 Subject: [PATCH 10/15] feat(bigquery): add support for bignumeric (#2779) feat(bigquery): add support for bignumeric This PR adds basic support for the BIGNUMERIC type in BigQuery. This library has several cases where it tries to infer the appropriate BigQuery type from a native Go type. For big.Rat types, we continue the existing behavior of mapping them to NUMERIC, as the big.Rat doesn't provide a general way of indicating desired precision or scale to determine whether BIGNUMERIC is a more appropriate mapping. --- bigquery/integration_test.go | 28 ++++---- bigquery/params.go | 41 +++++++----- bigquery/schema.go | 32 +++++---- bigquery/schema_test.go | 6 +- bigquery/value.go | 34 +++++++++- bigquery/value_test.go | 124 +++++++++++++++++++++-------------- go.sum | 2 + 7 files changed, 172 insertions(+), 95 deletions(-) diff --git a/bigquery/integration_test.go b/bigquery/integration_test.go index 14573e2bb3a..60959d0a0ca 100644 --- a/bigquery/integration_test.go +++ b/bigquery/integration_test.go @@ -1434,6 +1434,7 @@ func TestIntegration_InsertAndReadNullable(t *testing.T) { ctm := civil.Time{Hour: 15, Minute: 4, Second: 5, Nanosecond: 6000} cdt := civil.DateTime{Date: testDate, Time: ctm} rat := big.NewRat(33, 100) + rat2 := big.NewRat(66, 100) geo := "POINT(-122.198939 47.669865)" // Nil fields in the struct. @@ -1455,20 +1456,21 @@ func TestIntegration_InsertAndReadNullable(t *testing.T) { // Populate the struct with values. testInsertAndReadNullable(t, testStructNullable{ - String: NullString{"x", true}, - Bytes: []byte{1, 2, 3}, - Integer: NullInt64{1, true}, - Float: NullFloat64{2.3, true}, - Boolean: NullBool{true, true}, - Timestamp: NullTimestamp{testTimestamp, true}, - Date: NullDate{testDate, true}, - Time: NullTime{ctm, true}, - DateTime: NullDateTime{cdt, true}, - Numeric: rat, - Geography: NullGeography{geo, true}, - Record: &subNullable{X: NullInt64{4, true}}, + String: NullString{"x", true}, + Bytes: []byte{1, 2, 3}, + Integer: NullInt64{1, true}, + Float: NullFloat64{2.3, true}, + Boolean: NullBool{true, true}, + Timestamp: NullTimestamp{testTimestamp, true}, + Date: NullDate{testDate, true}, + Time: NullTime{ctm, true}, + DateTime: NullDateTime{cdt, true}, + Numeric: rat, + BigNumeric: rat2, + Geography: NullGeography{geo, true}, + Record: &subNullable{X: NullInt64{4, true}}, }, - []Value{"x", []byte{1, 2, 3}, int64(1), 2.3, true, testTimestamp, testDate, ctm, cdt, rat, geo, []Value{int64(4)}}) + []Value{"x", []byte{1, 2, 3}, int64(1), 2.3, true, testTimestamp, testDate, ctm, cdt, rat, rat2, geo, []Value{int64(4)}}) } func testInsertAndReadNullable(t *testing.T, ts testStructNullable, wantRow []Value) { diff --git a/bigquery/params.go b/bigquery/params.go index 59570226189..68bb3fa01ac 100644 --- a/bigquery/params.go +++ b/bigquery/params.go @@ -65,16 +65,17 @@ func (e invalidFieldNameError) Error() string { var fieldCache = fields.NewCache(bqTagParser, nil, nil) var ( - int64ParamType = &bq.QueryParameterType{Type: "INT64"} - float64ParamType = &bq.QueryParameterType{Type: "FLOAT64"} - boolParamType = &bq.QueryParameterType{Type: "BOOL"} - stringParamType = &bq.QueryParameterType{Type: "STRING"} - bytesParamType = &bq.QueryParameterType{Type: "BYTES"} - dateParamType = &bq.QueryParameterType{Type: "DATE"} - timeParamType = &bq.QueryParameterType{Type: "TIME"} - dateTimeParamType = &bq.QueryParameterType{Type: "DATETIME"} - timestampParamType = &bq.QueryParameterType{Type: "TIMESTAMP"} - numericParamType = &bq.QueryParameterType{Type: "NUMERIC"} + int64ParamType = &bq.QueryParameterType{Type: "INT64"} + float64ParamType = &bq.QueryParameterType{Type: "FLOAT64"} + boolParamType = &bq.QueryParameterType{Type: "BOOL"} + stringParamType = &bq.QueryParameterType{Type: "STRING"} + bytesParamType = &bq.QueryParameterType{Type: "BYTES"} + dateParamType = &bq.QueryParameterType{Type: "DATE"} + timeParamType = &bq.QueryParameterType{Type: "TIME"} + dateTimeParamType = &bq.QueryParameterType{Type: "DATETIME"} + timestampParamType = &bq.QueryParameterType{Type: "TIMESTAMP"} + numericParamType = &bq.QueryParameterType{Type: "NUMERIC"} + bigNumericParamType = &bq.QueryParameterType{Type: "BIGNUMERIC"} ) var ( @@ -233,6 +234,9 @@ func paramValue(v reflect.Value) (bq.QueryParameterValue, error) { return res, nil case typeOfRat: + // big.Rat types don't communicate scale or precision, so we cannot + // disambiguate between NUMERIC and BIGNUMERIC. For now, we'll continue + // to honor previous behavior and send as Numeric type. res.Value = NumericString(v.Interface().(*big.Rat)) return res, nil } @@ -304,14 +308,15 @@ func bqToQueryParameter(q *bq.QueryParameter) (QueryParameter, error) { } var paramTypeToFieldType = map[string]FieldType{ - int64ParamType.Type: IntegerFieldType, - float64ParamType.Type: FloatFieldType, - boolParamType.Type: BooleanFieldType, - stringParamType.Type: StringFieldType, - bytesParamType.Type: BytesFieldType, - dateParamType.Type: DateFieldType, - timeParamType.Type: TimeFieldType, - numericParamType.Type: NumericFieldType, + int64ParamType.Type: IntegerFieldType, + float64ParamType.Type: FloatFieldType, + boolParamType.Type: BooleanFieldType, + stringParamType.Type: StringFieldType, + bytesParamType.Type: BytesFieldType, + dateParamType.Type: DateFieldType, + timeParamType.Type: TimeFieldType, + numericParamType.Type: NumericFieldType, + bigNumericParamType.Type: BigNumericFieldType, } // Convert a parameter value from the service to a Go value. This is similar to, but diff --git a/bigquery/schema.go b/bigquery/schema.go index a9a50ef0006..dcb5c6f9b77 100644 --- a/bigquery/schema.go +++ b/bigquery/schema.go @@ -182,23 +182,27 @@ const ( // GeographyFieldType is a string field type. Geography types represent a set of points // on the Earth's surface, represented in Well Known Text (WKT) format. GeographyFieldType FieldType = "GEOGRAPHY" + // BigNumericFieldType is a numeric field type that supports values of larger precision + // and scale than the NumericFieldType. + BigNumericFieldType FieldType = "BIGNUMERIC" ) var ( errEmptyJSONSchema = errors.New("bigquery: empty JSON schema") fieldTypes = map[FieldType]bool{ - StringFieldType: true, - BytesFieldType: true, - IntegerFieldType: true, - FloatFieldType: true, - BooleanFieldType: true, - TimestampFieldType: true, - RecordFieldType: true, - DateFieldType: true, - TimeFieldType: true, - DateTimeFieldType: true, - NumericFieldType: true, - GeographyFieldType: true, + StringFieldType: true, + BytesFieldType: true, + IntegerFieldType: true, + FloatFieldType: true, + BooleanFieldType: true, + TimestampFieldType: true, + RecordFieldType: true, + DateFieldType: true, + TimeFieldType: true, + DateTimeFieldType: true, + NumericFieldType: true, + GeographyFieldType: true, + BigNumericFieldType: true, } // The API will accept alias names for the types based on the Standard SQL type names. fieldAliases = map[FieldType]FieldType{ @@ -346,6 +350,10 @@ func inferFieldSchema(fieldName string, rt reflect.Type, nullable bool) (*FieldS case typeOfDateTime: return &FieldSchema{Required: true, Type: DateTimeFieldType}, nil case typeOfRat: + // We automatically infer big.Rat values as NUMERIC as we cannot + // determine precision/scale from the type. Users who want the + // larger precision of BIGNUMERIC need to manipulate the inferred + // schema. return &FieldSchema{Required: !nullable, Type: NumericFieldType}, nil } if ft := nullableFieldType(rt); ft != "" { diff --git a/bigquery/schema_test.go b/bigquery/schema_test.go index 5bd10849ac3..ae936980c78 100644 --- a/bigquery/schema_test.go +++ b/bigquery/schema_test.go @@ -1041,7 +1041,8 @@ func TestSchemaFromJSON(t *testing.T) { {"name":"flat_date","type":"DATE","mode":"NULLABLE","description":"Flat required DATE"}, {"name":"flat_time","type":"TIME","mode":"REQUIRED","description":"Flat nullable TIME"}, {"name":"flat_datetime","type":"DATETIME","mode":"NULLABLE","description":"Flat required DATETIME"}, - {"name":"flat_numeric","type":"NUMERIC","mode":"REQUIRED","description":"Flat nullable NUMERIC"}, + {"name":"flat_numeric","type":"NUMERIC","mode":"REQUIRED","description":"Flat required NUMERIC"}, + {"name":"flat_bignumeric","type":"BIGNUMERIC","mode":"NULLABLE","description":"Flat nullable BIGNUMERIC"}, {"name":"flat_geography","type":"GEOGRAPHY","mode":"REQUIRED","description":"Flat required GEOGRAPHY"}, {"name":"aliased_integer","type":"INT64","mode":"REQUIRED","description":"Aliased required integer"}, {"name":"aliased_boolean","type":"BOOL","mode":"NULLABLE","description":"Aliased nullable boolean"}, @@ -1058,7 +1059,8 @@ func TestSchemaFromJSON(t *testing.T) { fieldSchema("Flat required DATE", "flat_date", "DATE", false, false, nil), fieldSchema("Flat nullable TIME", "flat_time", "TIME", false, true, nil), fieldSchema("Flat required DATETIME", "flat_datetime", "DATETIME", false, false, nil), - fieldSchema("Flat nullable NUMERIC", "flat_numeric", "NUMERIC", false, true, nil), + fieldSchema("Flat required NUMERIC", "flat_numeric", "NUMERIC", false, true, nil), + fieldSchema("Flat nullable BIGNUMERIC", "flat_bignumeric", "BIGNUMERIC", false, false, nil), fieldSchema("Flat required GEOGRAPHY", "flat_geography", "GEOGRAPHY", false, true, nil), fieldSchema("Aliased required integer", "aliased_integer", "INTEGER", false, true, nil), fieldSchema("Aliased nullable boolean", "aliased_boolean", "BOOLEAN", false, false, nil), diff --git a/bigquery/value.go b/bigquery/value.go index 361341c2bb8..cae28be0464 100644 --- a/bigquery/value.go +++ b/bigquery/value.go @@ -407,6 +407,13 @@ func determineSetFunc(ftype reflect.Type, stype FieldType) setFunc { return setNull(v, x, func() interface{} { return x.(*big.Rat) }) } } + + case BigNumericFieldType: + if ftype == typeOfRat { + return func(v reflect.Value, x interface{}) error { + return setNull(v, x, func() interface{} { return x.(*big.Rat) }) + } + } } return nil } @@ -692,7 +699,7 @@ func structFieldToUploadValue(vfield reflect.Value, schemaField *FieldSchema) (i } func toUploadValue(val interface{}, fs *FieldSchema) interface{} { - if fs.Type == TimeFieldType || fs.Type == DateTimeFieldType || fs.Type == NumericFieldType { + if fs.Type == TimeFieldType || fs.Type == DateTimeFieldType || fs.Type == NumericFieldType || fs.Type == BigNumericFieldType { return toUploadValueReflect(reflect.ValueOf(val), fs) } return val @@ -721,6 +728,13 @@ func toUploadValueReflect(v reflect.Value, fs *FieldSchema) interface{} { return formatUploadValue(v, fs, func(v reflect.Value) string { return NumericString(v.Interface().(*big.Rat)) }) + case BigNumericFieldType: + if r, ok := v.Interface().(*big.Rat); ok && r == nil { + return nil + } + return formatUploadValue(v, fs, func(v reflect.Value) string { + return BigNumericString(v.Interface().(*big.Rat)) + }) default: if !fs.Repeated || v.Len() > 0 { return v.Interface() @@ -786,6 +800,12 @@ const ( // NumericScaleDigits is the maximum number of digits after the decimal point in a NUMERIC value. NumericScaleDigits = 9 + + // BigNumericPrecisionDigits is the maximum number of full digits in a BIGNUMERIC value. + BigNumericPrecisionDigits = 76 + + // BigNumericScaleDigits is the maximum number of full digits in a BIGNUMERIC value. + BigNumericScaleDigits = 38 ) // NumericString returns a string representing a *big.Rat in a format compatible @@ -795,6 +815,12 @@ func NumericString(r *big.Rat) string { return r.FloatString(NumericScaleDigits) } +// BigNumericString returns a string representing a *big.Rat in a format compatible with BigQuery +// SQL. It returns a floating point literal with 38 digits after the decimal point. +func BigNumericString(r *big.Rat) string { + return r.FloatString(BigNumericScaleDigits) +} + // convertRows converts a series of TableRows into a series of Value slices. // schema is used to interpret the data from rows; its length must match the // length of each row. @@ -913,6 +939,12 @@ func convertBasicType(val string, typ FieldType) (Value, error) { return nil, fmt.Errorf("bigquery: invalid NUMERIC value %q", val) } return Value(r), nil + case BigNumericFieldType: + r, ok := (&big.Rat{}).SetString(val) + if !ok { + return nil, fmt.Errorf("bigquery: invalid BIGNUMERIC value %q", val) + } + return Value(r), nil case GeographyFieldType: return val, nil default: diff --git a/bigquery/value_test.go b/bigquery/value_test.go index 1e5bb2d37fc..4d08336ed02 100644 --- a/bigquery/value_test.go +++ b/bigquery/value_test.go @@ -36,6 +36,7 @@ func TestConvertBasicValues(t *testing.T) { {Type: BooleanFieldType}, {Type: BytesFieldType}, {Type: NumericFieldType}, + {Type: BigNumericFieldType}, {Type: GeographyFieldType}, } row := &bq.TableRow{ @@ -46,6 +47,7 @@ func TestConvertBasicValues(t *testing.T) { {V: "true"}, {V: base64.StdEncoding.EncodeToString([]byte("foo"))}, {V: "123.123456789"}, + {V: "99999999999999999999999999999999999999.99999999999999999999999999999999999999"}, {V: testGeography}, }, } @@ -54,7 +56,9 @@ func TestConvertBasicValues(t *testing.T) { t.Fatalf("error converting: %v", err) } - want := []Value{"a", int64(1), 1.2, true, []byte("foo"), big.NewRat(123123456789, 1e9), testGeography} + bigRatVal := new(big.Rat) + bigRatVal.SetString("99999999999999999999999999999999999999.99999999999999999999999999999999999999") + want := []Value{"a", int64(1), 1.2, true, []byte("foo"), big.NewRat(123123456789, 1e9), bigRatVal, testGeography} if !testutil.Equal(got, want) { t.Errorf("converting basic values: got:\n%v\nwant:\n%v", got, want) } @@ -444,6 +448,7 @@ func TestValuesSaverConvertsToMap(t *testing.T) { {Name: "strField", Type: StringFieldType}, {Name: "dtField", Type: DateTimeFieldType}, {Name: "nField", Type: NumericFieldType}, + {Name: "bigNumField", Type: BigNumericFieldType}, {Name: "geoField", Type: GeographyFieldType}, }, InsertID: "iid", @@ -452,16 +457,18 @@ func TestValuesSaverConvertsToMap(t *testing.T) { Date: civil.Date{Year: 1, Month: 2, Day: 3}, Time: civil.Time{Hour: 4, Minute: 5, Second: 6, Nanosecond: 7000}}, big.NewRat(123456789000, 1e9), + big.NewRat(1, 3), testGeography, }, }, wantInsertID: "iid", wantRow: map[string]Value{ - "intField": 1, - "strField": "a", - "dtField": "0001-02-03 04:05:06.000007", - "nField": "123.456789000", - "geoField": testGeography, + "intField": 1, + "strField": "a", + "dtField": "0001-02-03 04:05:06.000007", + "nField": "123.456789000", + "bigNumField": "0.33333333333333333333333333333333333333", + "geoField": testGeography, }, }, { @@ -603,6 +610,8 @@ func TestStructSaver(t *testing.T) { {Name: "p", Type: IntegerFieldType, Required: false}, {Name: "n", Type: NumericFieldType, Required: false}, {Name: "nr", Type: NumericFieldType, Repeated: true}, + {Name: "bn", Type: BigNumericFieldType, Required: false}, + {Name: "bnr", Type: BigNumericFieldType, Repeated: true}, {Name: "g", Type: GeographyFieldType, Required: false}, {Name: "gr", Type: GeographyFieldType, Repeated: true}, } @@ -619,6 +628,8 @@ func TestStructSaver(t *testing.T) { P NullInt64 N *big.Rat NR []*big.Rat + BN *big.Rat + BNR []*big.Rat G NullGeography GR []string // Repeated Geography } @@ -654,6 +665,8 @@ func TestStructSaver(t *testing.T) { P: NullInt64{Valid: true, Int64: 17}, N: big.NewRat(123456, 1000), NR: []*big.Rat{big.NewRat(3, 1), big.NewRat(56789, 1e5)}, + BN: big.NewRat(1, 3), + BNR: []*big.Rat{big.NewRat(1, 3), big.NewRat(1, 2)}, G: NullGeography{Valid: true, GeographyVal: "POINT(-122.350220 47.649154)"}, GR: []string{"POINT(-122.350220 47.649154)", "POINT(-122.198939 47.669865)"}, } @@ -667,6 +680,8 @@ func TestStructSaver(t *testing.T) { "p": NullInt64{Valid: true, Int64: 17}, "n": "123.456000000", "nr": []string{"3.000000000", "0.567890000"}, + "bn": "0.33333333333333333333333333333333333333", + "bnr": []string{"0.33333333333333333333333333333333333333", "0.50000000000000000000000000000000000000"}, "g": NullGeography{Valid: true, GeographyVal: "POINT(-122.350220 47.649154)"}, "gr": []string{"POINT(-122.350220 47.649154)", "POINT(-122.198939 47.669865)"}, } @@ -729,20 +744,24 @@ func TestStructSaverErrors(t *testing.T) { } } -func TestNumericString(t *testing.T) { +func TestNumericStrings(t *testing.T) { for _, test := range []struct { - in *big.Rat - want string + description string + in *big.Rat + wantNumeric string + wantBigNumeric string }{ - {big.NewRat(2, 3), "0.666666667"}, // round to 9 places - {big.NewRat(1, 2), "0.500000000"}, - {big.NewRat(1, 2*1e8), "0.000000005"}, - {big.NewRat(5, 1e10), "0.000000001"}, // round up the 5 in the 10th decimal place - {big.NewRat(-5, 1e10), "-0.000000001"}, // round half away from zero + {"repeating with rounding", big.NewRat(2, 3), "0.666666667", "0.66666666666666666666666666666666666667"}, + {"all zero padding", big.NewRat(1, 2), "0.500000000", "0.50000000000000000000000000000000000000"}, + {"zero pad with digit", big.NewRat(1, 2*1e8), "0.000000005", "0.00000000500000000000000000000000000000"}, + {"smaller rounding case 1", big.NewRat(5, 1e10), "0.000000001", "0.00000000050000000000000000000000000000"}, + {"smaller rounding case 2", big.NewRat(-5, 1e10), "-0.000000001", "-0.00000000050000000000000000000000000000"}, } { - got := NumericString(test.in) - if got != test.want { - t.Errorf("%v: got %q, want %q", test.in, got, test.want) + if got := NumericString(test.in); got != test.wantNumeric { + t.Errorf("case %q, val %v as numeric: got %q, want %q", test.description, test.in, got, test.wantNumeric) + } + if got := BigNumericString(test.in); got != test.wantBigNumeric { + t.Errorf("case %q, val %v as bignumeric: got %q, want %q", test.description, test.in, got, test.wantBigNumeric) } } } @@ -887,6 +906,7 @@ var ( {Name: "T", Type: TimeFieldType}, {Name: "DT", Type: DateTimeFieldType}, {Name: "N", Type: NumericFieldType}, + {Name: "BN", Type: BigNumericFieldType}, {Name: "G", Type: GeographyFieldType}, {Name: "nested", Type: RecordFieldType, Schema: Schema{ {Name: "nestS", Type: StringFieldType}, @@ -895,16 +915,17 @@ var ( {Name: "t", Type: StringFieldType}, } - testTimestamp = time.Date(2016, 11, 5, 7, 50, 22, 8, time.UTC) - testDate = civil.Date{Year: 2016, Month: 11, Day: 5} - testTime = civil.Time{Hour: 7, Minute: 50, Second: 22, Nanosecond: 8} - testDateTime = civil.DateTime{Date: testDate, Time: testTime} - testNumeric = big.NewRat(123, 456) + testTimestamp = time.Date(2016, 11, 5, 7, 50, 22, 8, time.UTC) + testDate = civil.Date{Year: 2016, Month: 11, Day: 5} + testTime = civil.Time{Hour: 7, Minute: 50, Second: 22, Nanosecond: 8} + testDateTime = civil.DateTime{Date: testDate, Time: testTime} + testNumeric = big.NewRat(123, 456) + testBigNumeric = big.NewRat(456, 789) // testGeography is a WKT string representing a single point. testGeography = "POINT(-122.350220 47.649154)" testValues = []Value{"x", "y", []byte{1, 2, 3}, int64(7), int64(8), 3.14, true, - testTimestamp, testDate, testTime, testDateTime, testNumeric, testGeography, + testTimestamp, testDate, testTime, testDateTime, testNumeric, testBigNumeric, testGeography, []Value{"nested", int64(17)}, "z"} ) @@ -918,6 +939,7 @@ type testStruct1 struct { By []byte F float64 N *big.Rat + BN *big.Rat G string Nested nested Tagged string `bigquery:"t"` @@ -952,6 +974,7 @@ func TestStructLoader(t *testing.T) { S2: "y", By: []byte{1, 2, 3}, N: big.NewRat(123, 456), + BN: big.NewRat(456, 789), G: testGeography, Nested: nested{NestS: "nested", NestI: 17}, Tagged: "z", @@ -1043,18 +1066,19 @@ func TestStructLoaderRepeated(t *testing.T) { } type testStructNullable struct { - String NullString - Bytes []byte - Integer NullInt64 - Float NullFloat64 - Boolean NullBool - Timestamp NullTimestamp - Date NullDate - Time NullTime - DateTime NullDateTime - Numeric *big.Rat - Geography NullGeography - Record *subNullable + String NullString + Bytes []byte + Integer NullInt64 + Float NullFloat64 + Boolean NullBool + Timestamp NullTimestamp + Date NullDate + Time NullTime + DateTime NullDateTime + Numeric *big.Rat + BigNumeric *big.Rat + Geography NullGeography + Record *subNullable } type subNullable struct { @@ -1072,6 +1096,7 @@ var testStructNullableSchema = Schema{ {Name: "Time", Type: TimeFieldType, Required: false}, {Name: "DateTime", Type: DateTimeFieldType, Required: false}, {Name: "Numeric", Type: NumericFieldType, Required: false}, + {Name: "BigNumeric", Type: BigNumericFieldType, Required: false}, {Name: "Geography", Type: GeographyFieldType, Required: false}, {Name: "Record", Type: RecordFieldType, Required: false, Schema: Schema{ {Name: "X", Type: IntegerFieldType, Required: false}, @@ -1088,24 +1113,25 @@ func TestStructLoaderNullable(t *testing.T) { } nonnilVals := []Value{"x", []byte{1, 2, 3}, int64(1), 2.3, true, testTimestamp, testDate, testTime, - testDateTime, big.NewRat(1, 2), testGeography, []Value{int64(4)}} + testDateTime, big.NewRat(1, 2), big.NewRat(3, 4), testGeography, []Value{int64(4)}} // All ts fields are nil. Loading non-nil values will cause them all to // be allocated. mustLoad(t, &ts, testStructNullableSchema, nonnilVals) want = testStructNullable{ - String: NullString{StringVal: "x", Valid: true}, - Bytes: []byte{1, 2, 3}, - Integer: NullInt64{Int64: 1, Valid: true}, - Float: NullFloat64{Float64: 2.3, Valid: true}, - Boolean: NullBool{Bool: true, Valid: true}, - Timestamp: NullTimestamp{Timestamp: testTimestamp, Valid: true}, - Date: NullDate{Date: testDate, Valid: true}, - Time: NullTime{Time: testTime, Valid: true}, - DateTime: NullDateTime{DateTime: testDateTime, Valid: true}, - Numeric: big.NewRat(1, 2), - Geography: NullGeography{GeographyVal: testGeography, Valid: true}, - Record: &subNullable{X: NullInt64{Int64: 4, Valid: true}}, + String: NullString{StringVal: "x", Valid: true}, + Bytes: []byte{1, 2, 3}, + Integer: NullInt64{Int64: 1, Valid: true}, + Float: NullFloat64{Float64: 2.3, Valid: true}, + Boolean: NullBool{Bool: true, Valid: true}, + Timestamp: NullTimestamp{Timestamp: testTimestamp, Valid: true}, + Date: NullDate{Date: testDate, Valid: true}, + Time: NullTime{Time: testTime, Valid: true}, + DateTime: NullDateTime{DateTime: testDateTime, Valid: true}, + Numeric: big.NewRat(1, 2), + BigNumeric: big.NewRat(3, 4), + Geography: NullGeography{GeographyVal: testGeography, Valid: true}, + Record: &subNullable{X: NullInt64{Int64: 4, Valid: true}}, } if diff := testutil.Diff(ts, want); diff != "" { t.Error(diff) @@ -1114,7 +1140,7 @@ func TestStructLoaderNullable(t *testing.T) { // Struct pointers are reused, byte slices are not. want = ts want.Bytes = []byte{17} - vals2 := []Value{nil, []byte{17}, nil, nil, nil, nil, nil, nil, nil, nil, nil, []Value{int64(7)}} + vals2 := []Value{nil, []byte{17}, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, []Value{int64(7)}} mustLoad(t, &ts, testStructNullableSchema, vals2) if ts.Record != want.Record { t.Error("record pointers not identical") diff --git a/go.sum b/go.sum index ea567ca6a70..b75391c1aae 100644 --- a/go.sum +++ b/go.sum @@ -22,6 +22,7 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0 h1:a/O/bK/vWrYGOTFtH8di4rBxMZnmkjy+Y5LxpDwo+dA= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= @@ -348,6 +349,7 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuA golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From fa77efa1a1880ff89307d54cc7e9e8c09430e4e2 Mon Sep 17 00:00:00 2001 From: shollyman Date: Thu, 19 Nov 2020 16:20:55 -0800 Subject: [PATCH 11/15] feat(bigquery): expose hive partitioning options (#3240) * feat(bigquery): add HivePartitioningOptions This resuscitates https://code-review.googlesource.com/c/gocloud/+/43270 and updates it now that the service is properly advertising the fields such as RequirePartitionFilter. --- bigquery/external.go | 72 ++++++++++++++++++++++++++++++++++++ bigquery/external_test.go | 8 ++++ bigquery/integration_test.go | 53 ++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) diff --git a/bigquery/external.go b/bigquery/external.go index e8d1fdee550..3f8647e568a 100644 --- a/bigquery/external.go +++ b/bigquery/external.go @@ -92,6 +92,10 @@ type ExternalDataConfig struct { // Additional options for CSV, GoogleSheets and Bigtable formats. Options ExternalDataConfigOptions + + // HivePartitioningOptions allows use of Hive partitioning based on the + // layout of objects in Google Cloud Storage. + HivePartitioningOptions *HivePartitioningOptions } func (e *ExternalDataConfig) toBQ() bq.ExternalDataConfiguration { @@ -106,6 +110,9 @@ func (e *ExternalDataConfig) toBQ() bq.ExternalDataConfiguration { if e.Schema != nil { q.Schema = e.Schema.toBQ() } + if e.HivePartitioningOptions != nil { + q.HivePartitioningOptions = e.HivePartitioningOptions.toBQ() + } if e.Options != nil { e.Options.populateExternalDataConfig(&q) } @@ -134,6 +141,9 @@ func bqToExternalDataConfig(q *bq.ExternalDataConfiguration) (*ExternalDataConfi return nil, err } } + if q.HivePartitioningOptions != nil { + e.HivePartitioningOptions = bqToHivePartitioningOptions(q.HivePartitioningOptions) + } return e, nil } @@ -409,3 +419,65 @@ func bqToBigtableColumn(q *bq.BigtableColumn) (*BigtableColumn, error) { } return b, nil } + +// HivePartitioningMode is used in conjunction with HivePartitioningOptions. +type HivePartitioningMode string + +const ( + // AutoHivePartitioningMode automatically infers partitioning key and types. + AutoHivePartitioningMode HivePartitioningMode = "AUTO" + // StringHivePartitioningMode automatically infers partitioning keys and treats values as string. + StringHivePartitioningMode HivePartitioningMode = "STRINGS" + // CustomHivePartitioningMode allows custom definition of the external partitioning. + CustomHivePartitioningMode HivePartitioningMode = "CUSTOM" +) + +// HivePartitioningOptions defines the behavior of Hive partitioning +// when working with external data. +type HivePartitioningOptions struct { + + // Mode defines which hive partitioning mode to use when reading data. + Mode HivePartitioningMode + + // When hive partition detection is requested, a common prefix for + // all source uris should be supplied. The prefix must end immediately + // before the partition key encoding begins. + // + // For example, consider files following this data layout. + // gs://bucket/path_to_table/dt=2019-01-01/country=BR/id=7/file.avro + // gs://bucket/path_to_table/dt=2018-12-31/country=CA/id=3/file.avro + // + // When hive partitioning is requested with either AUTO or STRINGS + // detection, the common prefix can be either of + // gs://bucket/path_to_table or gs://bucket/path_to_table/ (trailing + // slash does not matter). + SourceURIPrefix string + + // If set to true, queries against this external table require + // a partition filter to be present that can perform partition + // elimination. Hive-partitioned load jobs with this field + // set to true will fail. + RequirePartitionFilter bool +} + +func (o *HivePartitioningOptions) toBQ() *bq.HivePartitioningOptions { + if o == nil { + return nil + } + return &bq.HivePartitioningOptions{ + Mode: string(o.Mode), + SourceUriPrefix: o.SourceURIPrefix, + RequirePartitionFilter: o.RequirePartitionFilter, + } +} + +func bqToHivePartitioningOptions(q *bq.HivePartitioningOptions) *HivePartitioningOptions { + if q == nil { + return nil + } + return &HivePartitioningOptions{ + Mode: HivePartitioningMode(q.Mode), + SourceURIPrefix: q.SourceUriPrefix, + RequirePartitionFilter: q.RequirePartitionFilter, + } +} diff --git a/bigquery/external_test.go b/bigquery/external_test.go index f64297fd1a0..222cf274999 100644 --- a/bigquery/external_test.go +++ b/bigquery/external_test.go @@ -48,6 +48,14 @@ func TestExternalDataConfig(t *testing.T) { Range: "sheet1!A1:Z10", }, }, + { + SourceFormat: Avro, + HivePartitioningOptions: &HivePartitioningOptions{ + Mode: AutoHivePartitioningMode, + SourceURIPrefix: "gs://somebucket/a/b/c", + RequirePartitionFilter: true, + }, + }, { SourceFormat: Bigtable, Options: &BigtableOptions{ diff --git a/bigquery/integration_test.go b/bigquery/integration_test.go index 60959d0a0ca..e450e207ec5 100644 --- a/bigquery/integration_test.go +++ b/bigquery/integration_test.go @@ -1859,6 +1859,59 @@ func TestIntegration_LegacyQuery(t *testing.T) { } } +func TestIntegration_QueryExternalHivePartitioning(t *testing.T) { + if client == nil { + t.Skip("Integration tests skipped") + } + ctx := context.Background() + + autoTable := dataset.Table(tableIDs.New()) + customTable := dataset.Table(tableIDs.New()) + + err := autoTable.Create(ctx, &TableMetadata{ + ExternalDataConfig: &ExternalDataConfig{ + SourceFormat: Parquet, + SourceURIs: []string{"gs://cloud-samples-data/bigquery/hive-partitioning-samples/autolayout/*"}, + AutoDetect: true, + HivePartitioningOptions: &HivePartitioningOptions{ + Mode: AutoHivePartitioningMode, + SourceURIPrefix: "gs://cloud-samples-data/bigquery/hive-partitioning-samples/autolayout/", + RequirePartitionFilter: true, + }, + }, + }) + if err != nil { + t.Fatalf("table.Create(auto): %v", err) + } + defer autoTable.Delete(ctx) + + err = customTable.Create(ctx, &TableMetadata{ + ExternalDataConfig: &ExternalDataConfig{ + SourceFormat: Parquet, + SourceURIs: []string{"gs://cloud-samples-data/bigquery/hive-partitioning-samples/customlayout/*"}, + AutoDetect: true, + HivePartitioningOptions: &HivePartitioningOptions{ + Mode: CustomHivePartitioningMode, + SourceURIPrefix: "gs://cloud-samples-data/bigquery/hive-partitioning-samples/customlayout/{pkey:STRING}/", + RequirePartitionFilter: true, + }, + }, + }) + if err != nil { + t.Fatalf("table.Create(custom): %v", err) + } + defer customTable.Delete(ctx) + + // Issue a test query that prunes based on the custom hive partitioning key, and verify the result is as expected. + sql := fmt.Sprintf("SELECT COUNT(*) as ct FROM `%s`.%s.%s WHERE pkey=\"foo\"", customTable.ProjectID, customTable.DatasetID, customTable.TableID) + q := client.Query(sql) + it, err := q.Read(ctx) + if err != nil { + t.Fatalf("Error querying: %v", err) + } + checkReadAndTotalRows(t, "HiveQuery", it, [][]Value{{int64(50)}}) +} + func TestIntegration_QueryParameters(t *testing.T) { if client == nil { t.Skip("Integration tests skipped") From cf308308a3da134163a19ab78d6c605d6a2c2ef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Fri, 20 Nov 2020 13:30:04 +0100 Subject: [PATCH 12/15] test(spanner): fix flaky TestMaintainer test (#3237) * test(spanner): fix flaky TestMaintainer test Fixes #3230 * docs: clearify comment --- spanner/session_test.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/spanner/session_test.go b/spanner/session_test.go index b868ee839ce..4f4fdfc1a1e 100644 --- a/spanner/session_test.go +++ b/spanner/session_test.go @@ -1557,7 +1557,7 @@ func TestMaintainer(t *testing.T) { waitFor(t, func() error { sp.mu.Lock() defer sp.mu.Unlock() - if sp.numOpened != 5 { + if sp.numOpened != minOpened { return fmt.Errorf("Replenish. Expect %d open, got %d", sp.MinOpened, sp.numOpened) } return nil @@ -1574,12 +1574,22 @@ func TestMaintainer(t *testing.T) { t.Fatalf("cannot get session from session pool: %v", err) } } - sp.mu.Lock() - g, w := sp.numOpened, sp.MinOpened+sp.incStep - sp.mu.Unlock() - if g != w { - t.Fatalf("numOpened sessions mismatch\nGot: %d\nWant: %d", g, w) - } + // Wait for all sessions to be added to the pool. + // The pool already contained 5 sessions (MinOpened=5). + // The test took 20 sessions from the pool. That initiated the creation of + // additional sessions, and that is done in batches of 25 sessions, so the + // pool should contain 30 sessions (with 20 currently checked out). It + // could take a couple of milliseconds before all sessions have been + // created and added to the pool. + waitFor(t, func() error { + sp.mu.Lock() + defer sp.mu.Unlock() + g, w := sp.numOpened, sp.MinOpened+sp.incStep + if g != w { + return fmt.Errorf("numOpened sessions mismatch\nGot: %d\nWant: %d", g, w) + } + return nil + }) // Return 14 sessions to the pool. There are still 6 sessions checked out. for _, sh := range shs[:14] { From b17f9f00d1e8091bae98ab81291afb46438d6aa9 Mon Sep 17 00:00:00 2001 From: tmdiep Date: Tue, 24 Nov 2020 10:36:11 +1100 Subject: [PATCH 13/15] refactor(pubsublite): message routers set partition count when created (#3252) Removes messageRouter.SetPartitionCount and introduces messageRouterFactory to create new instances when the partition count changes. --- pubsublite/internal/wire/message_router.go | 49 ++++++++-------- .../internal/wire/message_router_test.go | 57 ++++++++----------- 2 files changed, 50 insertions(+), 56 deletions(-) diff --git a/pubsublite/internal/wire/message_router.go b/pubsublite/internal/wire/message_router.go index 23edebb9af8..58027c9c678 100644 --- a/pubsublite/internal/wire/message_router.go +++ b/pubsublite/internal/wire/message_router.go @@ -19,14 +19,9 @@ import ( "math/rand" ) -// messageRouter outputs a partition number, given an ordering key. Results are -// undefined when: -// - setPartitionCount() is called with count <= 0. -// - route() is called before setPartitionCount() to initialize the router. -// -// Message routers need to accommodate topic partition resizing. +// messageRouter outputs a partition number, given an ordering key (which it may +// ignore). type messageRouter interface { - SetPartitionCount(count int) Route(orderingKey []byte) int } @@ -38,12 +33,15 @@ type roundRobinMsgRouter struct { nextPartition int } -func (r *roundRobinMsgRouter) SetPartitionCount(count int) { - r.partitionCount = count - r.nextPartition = int(r.rng.Int63n(int64(count))) +func newRoundRobinMsgRouter(rng *rand.Rand, count int) *roundRobinMsgRouter { + return &roundRobinMsgRouter{ + rng: rng, + partitionCount: count, + nextPartition: int(rng.Int63n(int64(count))), + } } -func (r *roundRobinMsgRouter) Route(orderingKey []byte) (partition int) { +func (r *roundRobinMsgRouter) Route(_ []byte) (partition int) { partition = r.nextPartition r.nextPartition = (partition + 1) % r.partitionCount return @@ -58,8 +56,10 @@ type hashingMsgRouter struct { partitionCount *big.Int } -func (r *hashingMsgRouter) SetPartitionCount(count int) { - r.partitionCount = big.NewInt(int64(count)) +func newHashingMsgRouter(count int) *hashingMsgRouter { + return &hashingMsgRouter{ + partitionCount: big.NewInt(int64(count)), + } } func (r *hashingMsgRouter) Route(orderingKey []byte) int { @@ -79,11 +79,6 @@ type compositeMsgRouter struct { keylessRouter messageRouter } -func (r *compositeMsgRouter) SetPartitionCount(count int) { - r.keyedRouter.SetPartitionCount(count) - r.keylessRouter.SetPartitionCount(count) -} - func (r *compositeMsgRouter) Route(orderingKey []byte) int { if len(orderingKey) > 0 { return r.keyedRouter.Route(orderingKey) @@ -91,11 +86,19 @@ func (r *compositeMsgRouter) Route(orderingKey []byte) int { return r.keylessRouter.Route(orderingKey) } -// defaultMessageRouter returns a compositeMsgRouter that uses hashingMsgRouter -// for messages with ordering key and roundRobinMsgRouter for messages without. -func newDefaultMessageRouter(rng *rand.Rand) messageRouter { +type messageRouterFactory struct { + rng *rand.Rand +} + +func newMessageRouterFactory(rng *rand.Rand) *messageRouterFactory { + return &messageRouterFactory{rng: rng} +} + +// New returns a compositeMsgRouter that uses hashingMsgRouter for messages with +// ordering key and roundRobinMsgRouter for messages without. +func (f *messageRouterFactory) New(partitionCount int) messageRouter { return &compositeMsgRouter{ - keyedRouter: &hashingMsgRouter{}, - keylessRouter: &roundRobinMsgRouter{rng: rng}, + keyedRouter: newHashingMsgRouter(partitionCount), + keylessRouter: newRoundRobinMsgRouter(f.rng, partitionCount), } } diff --git a/pubsublite/internal/wire/message_router_test.go b/pubsublite/internal/wire/message_router_test.go index 0f847074afa..79d2159bec5 100644 --- a/pubsublite/internal/wire/message_router_test.go +++ b/pubsublite/internal/wire/message_router_test.go @@ -21,25 +21,7 @@ import ( "cloud.google.com/go/pubsublite/internal/test" ) -type fakeMsgRouter struct { - multiplier int - partitionCount int -} - -func (f *fakeMsgRouter) SetPartitionCount(count int) { - f.partitionCount = count -} - -func (f *fakeMsgRouter) Route(orderingKey []byte) int { - return f.partitionCount * f.multiplier -} - func TestRoundRobinMsgRouter(t *testing.T) { - // Using the same msgRouter for each test run ensures that it reinitializes - // when the partition count changes. - source := &test.FakeSource{} - msgRouter := &roundRobinMsgRouter{rng: rand.New(source)} - for _, tc := range []struct { partitionCount int source int64 @@ -57,8 +39,9 @@ func TestRoundRobinMsgRouter(t *testing.T) { }, } { t.Run(fmt.Sprintf("partitionCount=%d", tc.partitionCount), func(t *testing.T) { - source.Ret = tc.source - msgRouter.SetPartitionCount(tc.partitionCount) + source := &test.FakeSource{Ret: tc.source} + msgRouter := newRoundRobinMsgRouter(rand.New(source), tc.partitionCount) + for i, want := range tc.want { got := msgRouter.Route([]byte("IGNORED")) if got != want { @@ -70,10 +53,6 @@ func TestRoundRobinMsgRouter(t *testing.T) { } func TestHashingMsgRouter(t *testing.T) { - // Using the same msgRouter for each test run ensures that it reinitializes - // when the partition count changes. - msgRouter := &hashingMsgRouter{} - keys := [][]byte{ []byte("foo1"), []byte("foo2"), @@ -89,7 +68,7 @@ func TestHashingMsgRouter(t *testing.T) { {partitionCount: 5}, } { t.Run(fmt.Sprintf("partitionCount=%d", tc.partitionCount), func(t *testing.T) { - msgRouter.SetPartitionCount(tc.partitionCount) + msgRouter := newHashingMsgRouter(tc.partitionCount) for _, key := range keys { p1 := msgRouter.Route(key) p2 := msgRouter.Route(key) @@ -104,14 +83,16 @@ func TestHashingMsgRouter(t *testing.T) { } } -func TestCompositeMsgRouter(t *testing.T) { - keyedRouter := &fakeMsgRouter{multiplier: 10} - keylessRouter := &fakeMsgRouter{multiplier: 100} - msgRouter := &compositeMsgRouter{ - keyedRouter: keyedRouter, - keylessRouter: keylessRouter, - } +type fakeMsgRouter struct { + multiplier int + partitionCount int +} +func (f *fakeMsgRouter) Route(orderingKey []byte) int { + return f.partitionCount * f.multiplier +} + +func TestCompositeMsgRouter(t *testing.T) { for _, tc := range []struct { desc string partitionCount int @@ -138,7 +119,17 @@ func TestCompositeMsgRouter(t *testing.T) { }, } { t.Run(tc.desc, func(t *testing.T) { - msgRouter.SetPartitionCount(tc.partitionCount) + msgRouter := &compositeMsgRouter{ + keyedRouter: &fakeMsgRouter{ + multiplier: 10, + partitionCount: tc.partitionCount, + }, + keylessRouter: &fakeMsgRouter{ + multiplier: 100, + partitionCount: tc.partitionCount, + }, + } + if got := msgRouter.Route(tc.key); got != tc.want { t.Errorf("Route() = %d, want = %d", got, tc.want) } From 200e261dc28ab818ac7ebb08a38881aa663a4d9f Mon Sep 17 00:00:00 2001 From: tmdiep Date: Tue, 24 Nov 2020 11:28:44 +1100 Subject: [PATCH 14/15] test(pubsublite): integration test utils (#3254) Utils to track messages, validate ordering and detect duplicates. --- pubsublite/internal/test/msg_tracker.go | 90 +++++++++ pubsublite/internal/test/msg_tracker_test.go | 56 ++++++ pubsublite/internal/test/msg_validators.go | 181 ++++++++++++++++++ .../internal/test/msg_validators_test.go | 140 ++++++++++++++ 4 files changed, 467 insertions(+) create mode 100644 pubsublite/internal/test/msg_tracker.go create mode 100644 pubsublite/internal/test/msg_tracker_test.go create mode 100644 pubsublite/internal/test/msg_validators.go create mode 100644 pubsublite/internal/test/msg_validators_test.go diff --git a/pubsublite/internal/test/msg_tracker.go b/pubsublite/internal/test/msg_tracker.go new file mode 100644 index 00000000000..f89adeb67f2 --- /dev/null +++ b/pubsublite/internal/test/msg_tracker.go @@ -0,0 +1,90 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package test + +import ( + "fmt" + "sync" + "time" +) + +// MsgTracker is a helper for checking whether a set of messages make a full +// round trip from publisher to subscriber. +// +// Add() registers published messages. Remove() should be called when messages +// are received by subscribers. Call Wait() to block until all tracked messages +// are received. The same MsgTracker instance can be reused to repeat this +// sequence for multiple test cycles. +// +// Add() and Remove() calls should not be interleaved. +type MsgTracker struct { + msgMap map[string]bool + done chan struct{} + mu sync.Mutex +} + +// NewMsgTracker creates a new message tracker. +func NewMsgTracker() *MsgTracker { + return &MsgTracker{ + msgMap: make(map[string]bool), + done: make(chan struct{}, 1), + } +} + +// Add a set of tracked messages. +func (mt *MsgTracker) Add(msgs ...string) { + mt.mu.Lock() + defer mt.mu.Unlock() + + for _, msg := range msgs { + mt.msgMap[msg] = true + } +} + +// Remove and return true if `msg` is tracked. Signals the `done` channel once +// all messages have been received. +func (mt *MsgTracker) Remove(msg string) bool { + mt.mu.Lock() + defer mt.mu.Unlock() + + if _, exists := mt.msgMap[msg]; exists { + delete(mt.msgMap, msg) + if len(mt.msgMap) == 0 { + var void struct{} + mt.done <- void + } + return true + } + return false +} + +// Wait up to `timeout` to receive all tracked messages. +func (mt *MsgTracker) Wait(timeout time.Duration) error { + mt.mu.Lock() + totalCount := len(mt.msgMap) + mt.mu.Unlock() + + select { + case <-time.After(timeout): + mt.mu.Lock() + receivedCount := totalCount - len(mt.msgMap) + err := fmt.Errorf("received %d of %d messages", receivedCount, totalCount) + mt.msgMap = make(map[string]bool) + mt.mu.Unlock() + return err + + case <-mt.done: + return nil + } +} diff --git a/pubsublite/internal/test/msg_tracker_test.go b/pubsublite/internal/test/msg_tracker_test.go new file mode 100644 index 00000000000..642bfd3c18d --- /dev/null +++ b/pubsublite/internal/test/msg_tracker_test.go @@ -0,0 +1,56 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package test + +import ( + "testing" + "time" +) + +func TestMsgTrackerWaitSuccess(t *testing.T) { + msgs := []string{"a", "b", "c"} + + msgTracker := NewMsgTracker() + msgTracker.Add(msgs...) + + for _, msg := range msgs { + if got, want := msgTracker.Remove(msg), true; got != want { + t.Errorf("MsgTracker.Remove(%q) got %v, want %v", msg, got, want) + } + } + for _, msg := range []string{"d", "e"} { + if got, want := msgTracker.Remove(msg), false; got != want { + t.Errorf("MsgTracker.Remove(%q) got %v, want %v", msg, got, want) + } + } + if gotErr := msgTracker.Wait(time.Millisecond); gotErr != nil { + t.Errorf("MsgTracker.Wait() got err: %v", gotErr) + } +} + +func TestMsgTrackerWaitTimeout(t *testing.T) { + msgs := []string{"a", "b", "c"} + + msgTracker := NewMsgTracker() + msgTracker.Add(msgs...) + + for _, msg := range []string{"a", "c"} { + if got, want := msgTracker.Remove(msg), true; got != want { + t.Errorf("MsgTracker.Remove(%q) got %v, want %v", msg, got, want) + } + } + if gotErr, wantMsg := msgTracker.Wait(time.Millisecond), "received 2 of 3 messages"; ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("MsgTracker.Wait() got err: %v, want msg: %q", gotErr, wantMsg) + } +} diff --git a/pubsublite/internal/test/msg_validators.go b/pubsublite/internal/test/msg_validators.go new file mode 100644 index 00000000000..323e314d269 --- /dev/null +++ b/pubsublite/internal/test/msg_validators.go @@ -0,0 +1,181 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package test + +import ( + "fmt" + "strconv" + "strings" + "sync" +) + +// OrderingSender generates strings containing a message index to use for +// verifying message ordering. It is used on conjunction with Publishers. +type OrderingSender struct { + TotalMsgCount int64 +} + +// NewOrderingSender creats a new OrderingSender. +func NewOrderingSender() *OrderingSender { + return new(OrderingSender) +} + +// Next generates the next string to publish. +func (os *OrderingSender) Next(prefix string) string { + os.TotalMsgCount++ + return fmt.Sprintf("%s/%d", prefix, os.TotalMsgCount) +} + +// OrderingReceiver consumes a message string generated by OrderingSender and +// verifies that messages in a partition are ordered. It is used in conjunction +// with Subscribers. +type OrderingReceiver struct { + mu sync.Mutex + // Map of key and last received message index. Messages are only guaranteed to + // be received in order within a partition. + received map[string]int64 +} + +// NewOrderingReceiver creates a new OrderingReceiver. +func NewOrderingReceiver() *OrderingReceiver { + return &OrderingReceiver{ + received: make(map[string]int64), + } +} + +func parseMsgIndex(msg string) int64 { + pos := strings.LastIndex(msg, "/") + if pos >= 0 { + if n, err := strconv.ParseInt(msg[pos+1:], 10, 64); err == nil { + return n + } + } + return -1 +} + +// Receive checks the given message data and key and returns an error if +// unordered messages are detected. +// +// Note: a normal scenario resulting in unordered messages is when the Publish +// stream breaks while there are in-flight batches, which are resent upon +// stream reconnect. +func (or *OrderingReceiver) Receive(data, key string) error { + or.mu.Lock() + defer or.mu.Unlock() + + idx := parseMsgIndex(data) + if idx < 0 { + return fmt.Errorf("failed to parse index from message: %q", data) + } + + // Verify non-decreasing ordering. Allow duplicates, which can be verified + // with DuplicateMsgDetector. + lastIdx, exists := or.received[key] + if exists && idx < lastIdx { + return fmt.Errorf("message ordering failed for key %s, expected message idx >= %d, got %d", key, lastIdx, idx) + } + or.received[key] = idx + return nil +} + +var void struct{} + +type msgMetadata struct { + offsets map[int64]struct{} +} + +func newMsgMetadata() *msgMetadata { + return &msgMetadata{ + offsets: make(map[int64]struct{}), + } +} + +func (mm *msgMetadata) ContainsOffset(offset int64) bool { + _, exists := mm.offsets[offset] + return exists +} + +func (mm *msgMetadata) AddOffset(offset int64) { + mm.offsets[offset] = void +} + +// DuplicateMsgDetector can be used to detect duplicate messages, either due to +// duplicate publishes or receives. +type DuplicateMsgDetector struct { + mu sync.Mutex + // Map of Pub/Sub message data and associated metadata. + msgs map[string]*msgMetadata + duplicatePublishCount int64 + duplicateReceiveCount int64 +} + +// NewDuplicateMsgDetector creates a new DuplicateMsgDetector. +func NewDuplicateMsgDetector() *DuplicateMsgDetector { + return &DuplicateMsgDetector{ + msgs: make(map[string]*msgMetadata), + } +} + +// Receive checks the given message data and offset. +func (dm *DuplicateMsgDetector) Receive(data string, offset int64) { + dm.mu.Lock() + defer dm.mu.Unlock() + + if metadata, exists := dm.msgs[data]; exists { + if metadata.ContainsOffset(offset) { + // If the message contains the same offset, it means it was received + // multiple times. This is not expected within a single test run. But it + // is normal when processes are stopped & restarted without committing + // cursors. + dm.duplicateReceiveCount++ + } else { + // If the message contains a different offset, it means a message was + // republished, which can occur when a publish stream reconnects with + // in-flight published messages. + dm.duplicatePublishCount++ + metadata.AddOffset(offset) + } + } else { + metadata = newMsgMetadata() + metadata.AddOffset(offset) + dm.msgs[data] = metadata + } +} + +// Status returns a non-empty status string if there were duplicates detected. +func (dm *DuplicateMsgDetector) Status() string { + dm.mu.Lock() + defer dm.mu.Unlock() + + if (dm.duplicateReceiveCount + dm.duplicatePublishCount) == 0 { + return "" + } + return fmt.Sprintf("duplicate publish count = %d, receive count = %d", dm.duplicatePublishCount, dm.duplicateReceiveCount) +} + +// HasPublishDuplicates returns true if duplicate published messages were +// detected. +func (dm *DuplicateMsgDetector) HasPublishDuplicates() bool { + dm.mu.Lock() + defer dm.mu.Unlock() + return dm.duplicatePublishCount > 0 +} + +// HasReceiveDuplicates returns true if duplicate received messages were +// detected. +func (dm *DuplicateMsgDetector) HasReceiveDuplicates() bool { + dm.mu.Lock() + defer dm.mu.Unlock() + return dm.duplicateReceiveCount > 0 +} diff --git a/pubsublite/internal/test/msg_validators_test.go b/pubsublite/internal/test/msg_validators_test.go new file mode 100644 index 00000000000..5def0c620cb --- /dev/null +++ b/pubsublite/internal/test/msg_validators_test.go @@ -0,0 +1,140 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package test + +import ( + "testing" +) + +func TestOrderingSender(t *testing.T) { + sender := NewOrderingSender() + if got, want := sender.Next("prefix"), "prefix/1"; got != want { + t.Errorf("OrderingSender.Next() got %q, want %q", got, want) + } + if got, want := sender.Next("prefix"), "prefix/2"; got != want { + t.Errorf("OrderingSender.Next() got %q, want %q", got, want) + } + if got, want := sender.Next("foo"), "foo/3"; got != want { + t.Errorf("OrderingSender.Next() got %q, want %q", got, want) + } +} + +func TestOrderingReceiver(t *testing.T) { + receiver := NewOrderingReceiver() + + t.Run("Invalid message", func(t *testing.T) { + if gotErr, wantMsg := receiver.Receive("invalid", "ignored"), "failed to parse index"; !ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("OrderingReceiver.Receive() got err: %v, want msg: %q", gotErr, wantMsg) + } + }) + + t.Run("Key=foo", func(t *testing.T) { + if gotErr := receiver.Receive("foo/1", "foo"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr := receiver.Receive("foo/3", "foo"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr := receiver.Receive("foo/3", "foo"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr := receiver.Receive("foo/4", "foo"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr, wantMsg := receiver.Receive("foo/3", "foo"), "expected message idx >= 4, got 3"; !ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("OrderingReceiver.Receive() got err: %v, want msg: %q", gotErr, wantMsg) + } + }) + + t.Run("Key=bar", func(t *testing.T) { + if gotErr := receiver.Receive("bar/30", "bar"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr := receiver.Receive("bar/30", "bar"); gotErr != nil { + t.Errorf("OrderingReceiver.Receive() got err: %v", gotErr) + } + if gotErr, wantMsg := receiver.Receive("bar/29", "bar"), "expected message idx >= 30, got 29"; !ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("OrderingReceiver.Receive() got err: %v, want msg: %q", gotErr, wantMsg) + } + }) +} + +func TestDuplicateMsgDetector(t *testing.T) { + t.Run("No duplicates", func(t *testing.T) { + duplicateDetector := NewDuplicateMsgDetector() + duplicateDetector.Receive("foo", 10) + duplicateDetector.Receive("bar", 20) + + if got, want := duplicateDetector.duplicatePublishCount, int64(0); got != want { + t.Errorf("DuplicateMsgDetector.duplicatePublishCount() got %v, want %v", got, want) + } + if got, want := duplicateDetector.duplicateReceiveCount, int64(0); got != want { + t.Errorf("DuplicateMsgDetector.duplicateReceiveCount got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasPublishDuplicates(), false; got != want { + t.Errorf("DuplicateMsgDetector.HasPublishDuplicates() got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasReceiveDuplicates(), false; got != want { + t.Errorf("DuplicateMsgDetector.HasReceiveDuplicates() got %v, want %v", got, want) + } + if got, want := duplicateDetector.Status(), ""; got != want { + t.Errorf("DuplicateMsgDetector.Status() got %q, want %q", got, want) + } + }) + + t.Run("Duplicate publish", func(t *testing.T) { + duplicateDetector := NewDuplicateMsgDetector() + duplicateDetector.Receive("foo", 10) + duplicateDetector.Receive("foo", 11) + duplicateDetector.Receive("foo", 12) + + if got, want := duplicateDetector.duplicatePublishCount, int64(2); got != want { + t.Errorf("DuplicateMsgDetector.duplicatePublishCount() got %v, want %v", got, want) + } + if got, want := duplicateDetector.duplicateReceiveCount, int64(0); got != want { + t.Errorf("DuplicateMsgDetector.duplicateReceiveCount got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasPublishDuplicates(), true; got != want { + t.Errorf("DuplicateMsgDetector.HasPublishDuplicates() got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasReceiveDuplicates(), false; got != want { + t.Errorf("DuplicateMsgDetector.HasReceiveDuplicates() got %v, want %v", got, want) + } + if got := duplicateDetector.Status(); got == "" { + t.Errorf("DuplicateMsgDetector.Status() got %q, want status string", got) + } + }) + + t.Run("Duplicate receive", func(t *testing.T) { + duplicateDetector := NewDuplicateMsgDetector() + duplicateDetector.Receive("bar", 20) + duplicateDetector.Receive("bar", 20) + + if got, want := duplicateDetector.duplicatePublishCount, int64(0); got != want { + t.Errorf("DuplicateMsgDetector.duplicatePublishCount() got %v, want %v", got, want) + } + if got, want := duplicateDetector.duplicateReceiveCount, int64(1); got != want { + t.Errorf("DuplicateMsgDetector.duplicateReceiveCount got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasPublishDuplicates(), false; got != want { + t.Errorf("DuplicateMsgDetector.HasPublishDuplicates() got %v, want %v", got, want) + } + if got, want := duplicateDetector.HasReceiveDuplicates(), true; got != want { + t.Errorf("DuplicateMsgDetector.HasReceiveDuplicates() got %v, want %v", got, want) + } + if got := duplicateDetector.Status(); got == "" { + t.Errorf("DuplicateMsgDetector.Status() got %q, want status string", got) + } + }) +} From 4982eeb32ebe85de211ae09d13fdaf6140d9e115 Mon Sep 17 00:00:00 2001 From: tmdiep Date: Wed, 25 Nov 2020 13:13:11 +1100 Subject: [PATCH 15/15] feat(pubsublite): single partition publisher implementation (#3225) Implements the publisher for a single partition. A Bundler is used to batch messages. --- pubsublite/common/publish_data.go | 46 ++ pubsublite/common/publish_data_test.go | 68 +++ pubsublite/go.mod | 1 + pubsublite/go.sum | 1 + pubsublite/internal/wire/publish_batcher.go | 181 +++++++ .../internal/wire/publish_batcher_test.go | 344 ++++++++++++++ pubsublite/internal/wire/publisher.go | 259 ++++++++++ pubsublite/internal/wire/publisher_test.go | 447 ++++++++++++++++++ 8 files changed, 1347 insertions(+) create mode 100644 pubsublite/common/publish_data.go create mode 100644 pubsublite/common/publish_data_test.go create mode 100644 pubsublite/internal/wire/publish_batcher.go create mode 100644 pubsublite/internal/wire/publish_batcher_test.go create mode 100644 pubsublite/internal/wire/publisher.go create mode 100644 pubsublite/internal/wire/publisher_test.go diff --git a/pubsublite/common/publish_data.go b/pubsublite/common/publish_data.go new file mode 100644 index 00000000000..a4658160d18 --- /dev/null +++ b/pubsublite/common/publish_data.go @@ -0,0 +1,46 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package common + +import ( + "fmt" + "strconv" + "strings" +) + +// PublishMetadata holds the results of a published message. +type PublishMetadata struct { + Partition int + Offset int64 +} + +func (pm *PublishMetadata) String() string { + return fmt.Sprintf("%d:%d", pm.Partition, pm.Offset) +} + +// ParsePublishMetadata converts a string obtained from PublishMetadata.String() +// back to PublishMetadata. +func ParsePublishMetadata(input string) (*PublishMetadata, error) { + parts := strings.Split(input, ":") + if len(parts) != 2 { + return nil, fmt.Errorf("pubsublite: invalid encoded PublishMetadata %q", input) + } + + partition, pErr := strconv.ParseInt(parts[0], 10, 64) + offset, oErr := strconv.ParseInt(parts[1], 10, 64) + if pErr != nil || oErr != nil { + return nil, fmt.Errorf("pubsublite: invalid encoded PublishMetadata %q", input) + } + return &PublishMetadata{Partition: int(partition), Offset: offset}, nil +} diff --git a/pubsublite/common/publish_data_test.go b/pubsublite/common/publish_data_test.go new file mode 100644 index 00000000000..89151374584 --- /dev/null +++ b/pubsublite/common/publish_data_test.go @@ -0,0 +1,68 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package common + +import ( + "testing" + + "cloud.google.com/go/internal/testutil" +) + +func TestPublishMetadataStringEncoding(t *testing.T) { + for _, tc := range []struct { + desc string + input string + want *PublishMetadata + wantErr bool + }{ + { + desc: "valid: zero", + input: "0:0", + want: &PublishMetadata{Partition: 0, Offset: 0}, + }, + { + desc: "valid: non-zero", + input: "3:1234", + want: &PublishMetadata{Partition: 3, Offset: 1234}, + }, + { + desc: "invalid: number", + input: "1234", + wantErr: true, + }, + { + desc: "invalid: partition", + input: "p:1234", + wantErr: true, + }, + { + desc: "invalid: offset", + input: "10:9offset", + wantErr: true, + }, + } { + t.Run(tc.desc, func(t *testing.T) { + got, gotErr := ParsePublishMetadata(tc.input) + if !testutil.Equal(got, tc.want) || (gotErr != nil) != tc.wantErr { + t.Errorf("ParsePublishMetadata(%q): got (%v, %v), want (%v, err=%v)", tc.input, got, gotErr, tc.want, tc.wantErr) + } + + if tc.want != nil { + if got := tc.want.String(); got != tc.input { + t.Errorf("PublishMetadata(%v).String(): got %q, want: %q", tc.want, got, tc.input) + } + } + }) + } +} diff --git a/pubsublite/go.mod b/pubsublite/go.mod index 09727ba1986..1466aa04337 100644 --- a/pubsublite/go.mod +++ b/pubsublite/go.mod @@ -11,4 +11,5 @@ require ( google.golang.org/api v0.35.0 google.golang.org/genproto v0.0.0-20201119123407-9b1e624d6bc4 google.golang.org/grpc v1.33.2 + google.golang.org/protobuf v1.25.0 ) diff --git a/pubsublite/go.sum b/pubsublite/go.sum index bd119db5e1d..8f60186a9ef 100644 --- a/pubsublite/go.sum +++ b/pubsublite/go.sum @@ -216,6 +216,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/pubsublite/internal/wire/publish_batcher.go b/pubsublite/internal/wire/publish_batcher.go new file mode 100644 index 00000000000..8a32accf248 --- /dev/null +++ b/pubsublite/internal/wire/publish_batcher.go @@ -0,0 +1,181 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "container/list" + "errors" + "fmt" + + "cloud.google.com/go/pubsublite/common" + "google.golang.org/api/support/bundler" + "google.golang.org/protobuf/proto" + + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +var errPublishQueueEmpty = errors.New("pubsublite: received publish response from server with no batches in flight") + +// PublishResultFunc receives the result of a publish. +type PublishResultFunc func(*common.PublishMetadata, error) + +// messageHolder stores a message to be published, with associated metadata. +type messageHolder struct { + msg *pb.PubSubMessage + size int + onResult PublishResultFunc +} + +// publishBatch holds messages that are published in the same +// MessagePublishRequest. +type publishBatch struct { + msgHolders []*messageHolder +} + +func (b *publishBatch) ToPublishRequest() *pb.PublishRequest { + msgs := make([]*pb.PubSubMessage, len(b.msgHolders)) + for i, holder := range b.msgHolders { + msgs[i] = holder.msg + } + + return &pb.PublishRequest{ + RequestType: &pb.PublishRequest_MessagePublishRequest{ + MessagePublishRequest: &pb.MessagePublishRequest{ + Messages: msgs, + }, + }, + } +} + +// publishMessageBatcher manages batching of messages, as well as in-flight +// published batches. It is owned by singlePartitionPublisher. +type publishMessageBatcher struct { + partition int + // Used to batch messages. Setting HandlerLimit=1 results in ordered batches. + msgBundler *bundler.Bundler + // FIFO queue of in-flight batches of published messages. Results have not yet + // been received from the server. + publishQueue *list.List // Value = *publishBatch + // Used for error checking, to ensure the server returns increasing offsets + // for published messages. + minExpectedNextOffset int64 + // The available buffer size is managed by this batcher rather than the + // Bundler due to the in-flight publish queue. + availableBufferBytes int +} + +func newPublishMessageBatcher(settings *PublishSettings, partition int, onNewBatch func(*publishBatch)) *publishMessageBatcher { + batcher := &publishMessageBatcher{ + partition: partition, + publishQueue: list.New(), + availableBufferBytes: settings.BufferedByteLimit, + } + + msgBundler := bundler.NewBundler(&messageHolder{}, func(item interface{}) { + msgs, _ := item.([]*messageHolder) + if len(msgs) == 0 { + // This should not occur. + return + } + // The publishMessageBatcher is accessed by the singlePartitionPublisher and + // Bundler handler func (called in a goroutine). + // singlePartitionPublisher.onNewBatch() receives the new batch from the + // Bundler, which calls publishMessageBatcher.AddBatch(). Only the + // publisher's mutex is required. + onNewBatch(&publishBatch{msgHolders: msgs}) + }) + msgBundler.DelayThreshold = settings.DelayThreshold + msgBundler.BundleCountThreshold = settings.CountThreshold + msgBundler.BundleByteThreshold = settings.ByteThreshold // Soft limit + msgBundler.BundleByteLimit = MaxPublishRequestBytes // Hard limit + msgBundler.HandlerLimit = 1 // Handle batches serially for ordering + msgBundler.BufferedByteLimit = settings.BufferedByteLimit // Actually handled in the batcher + + batcher.msgBundler = msgBundler + return batcher +} + +func (b *publishMessageBatcher) AddMessage(msg *pb.PubSubMessage, onResult PublishResultFunc) error { + msgSize := proto.Size(msg) + switch { + case msgSize > MaxPublishMessageBytes: + return fmt.Errorf("pubsublite: serialized message size is %d bytes, maximum allowed size is MaxPublishMessageBytes (%d)", msgSize, MaxPublishMessageBytes) + case msgSize > b.availableBufferBytes: + return ErrOverflow + } + + holder := &messageHolder{msg: msg, size: msgSize, onResult: onResult} + if err := b.msgBundler.Add(holder, msgSize); err != nil { + // As we've already checked the size of the message and overflow, the + // bundler should not return an error. + return fmt.Errorf("pubsublite: failed to batch message: %v", err) + } + b.availableBufferBytes -= msgSize + return nil +} + +func (b *publishMessageBatcher) AddBatch(batch *publishBatch) { + b.publishQueue.PushBack(batch) +} + +func (b *publishMessageBatcher) OnPublishResponse(firstOffset int64) error { + frontElem := b.publishQueue.Front() + if frontElem == nil { + return errPublishQueueEmpty + } + if firstOffset < b.minExpectedNextOffset { + return fmt.Errorf("pubsublite: server returned publish response with inconsistent start offset = %d, expected >= %d", firstOffset, b.minExpectedNextOffset) + } + + batch, _ := frontElem.Value.(*publishBatch) + for i, msgHolder := range batch.msgHolders { + // Messages are ordered, so the offset of each message is firstOffset + i. + pm := &common.PublishMetadata{Partition: b.partition, Offset: firstOffset + int64(i)} + msgHolder.onResult(pm, nil) + b.availableBufferBytes += msgHolder.size + } + + b.minExpectedNextOffset = firstOffset + int64(len(batch.msgHolders)) + b.publishQueue.Remove(frontElem) + return nil +} + +func (b *publishMessageBatcher) OnPermanentError(err error) { + for elem := b.publishQueue.Front(); elem != nil; elem = elem.Next() { + if batch, ok := elem.Value.(*publishBatch); ok { + for _, msgHolder := range batch.msgHolders { + msgHolder.onResult(nil, err) + } + } + } + b.publishQueue.Init() +} + +func (b *publishMessageBatcher) InFlightBatches() []*publishBatch { + var batches []*publishBatch + for elem := b.publishQueue.Front(); elem != nil; elem = elem.Next() { + if batch, ok := elem.Value.(*publishBatch); ok { + batches = append(batches, batch) + } + } + return batches +} + +func (b *publishMessageBatcher) Flush() { + b.msgBundler.Flush() +} + +func (b *publishMessageBatcher) InFlightBatchesEmpty() bool { + return b.publishQueue.Len() == 0 +} diff --git a/pubsublite/internal/wire/publish_batcher_test.go b/pubsublite/internal/wire/publish_batcher_test.go new file mode 100644 index 00000000000..3e12fe2bef1 --- /dev/null +++ b/pubsublite/internal/wire/publish_batcher_test.go @@ -0,0 +1,344 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "bytes" + "testing" + "time" + + "cloud.google.com/go/internal/testutil" + "cloud.google.com/go/pubsublite/common" + "cloud.google.com/go/pubsublite/internal/test" + "github.com/google/go-cmp/cmp" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +// testPublishResultReceiver provides convenience methods for receiving and +// validating Publish results. +type testPublishResultReceiver struct { + done chan struct{} + msg string + t *testing.T + got *common.PublishMetadata + gotErr error +} + +func newTestPublishResultReceiver(t *testing.T, msg *pb.PubSubMessage) *testPublishResultReceiver { + return &testPublishResultReceiver{ + t: t, + msg: string(msg.Data), + done: make(chan struct{}), + } +} + +func (r *testPublishResultReceiver) set(pm *common.PublishMetadata, err error) { + r.got = pm + r.gotErr = err + close(r.done) +} + +func (r *testPublishResultReceiver) wait() bool { + select { + case <-time.After(serviceTestWaitTimeout): + r.t.Errorf("Publish(%q) result not available within %v", r.msg, serviceTestWaitTimeout) + return false + case <-r.done: + return true + } +} + +func (r *testPublishResultReceiver) ValidateResult(wantPartition int, wantOffset int64) { + if !r.wait() { + return + } + if r.gotErr != nil { + r.t.Errorf("Publish(%q) error: (%v), want: partition=%d,offset=%d", r.msg, r.gotErr, wantPartition, wantOffset) + } else if r.got.Partition != wantPartition || r.got.Offset != wantOffset { + r.t.Errorf("Publish(%q) got: partition=%d,offset=%d, want: partition=%d,offset=%d", r.msg, r.got.Partition, r.got.Offset, wantPartition, wantOffset) + } +} + +func (r *testPublishResultReceiver) ValidateError(wantErr error) { + if !r.wait() { + return + } + if !test.ErrorEqual(r.gotErr, wantErr) { + r.t.Errorf("Publish(%q) error: (%v), want: (%v)", r.msg, r.gotErr, wantErr) + } +} + +func (r *testPublishResultReceiver) ValidateErrorCode(wantCode codes.Code) { + if !r.wait() { + return + } + if !test.ErrorHasCode(r.gotErr, wantCode) { + r.t.Errorf("Publish(%q) error: (%v), want code: %v", r.msg, r.gotErr, wantCode) + } +} + +func (r *testPublishResultReceiver) ValidateErrorMsg(wantStr string) { + if !r.wait() { + return + } + if !test.ErrorHasMsg(r.gotErr, wantStr) { + r.t.Errorf("Publish(%q) error: (%v), want msg: %q", r.msg, r.gotErr, wantStr) + } +} + +// testPublishBatchReceiver receives message batches from the Bundler. +type testPublishBatchReceiver struct { + t *testing.T + batchesC chan *publishBatch +} + +func newTestPublishBatchReceiver(t *testing.T) *testPublishBatchReceiver { + return &testPublishBatchReceiver{ + t: t, + batchesC: make(chan *publishBatch, 3), + } +} + +func (br *testPublishBatchReceiver) onNewBatch(batch *publishBatch) { + br.batchesC <- batch +} + +func (br *testPublishBatchReceiver) ValidateBatches(want []*publishBatch) { + var got []*publishBatch + for count := 0; count < len(want); count++ { + select { + case <-time.After(serviceTestWaitTimeout): + br.t.Errorf("Publish batches count: got %d, want %d", count, len(want)) + case batch := <-br.batchesC: + got = append(got, batch) + } + } + + if !testutil.Equal(got, want, cmp.AllowUnexported(publishBatch{}, messageHolder{})) { + br.t.Errorf("Batches got: %v\nwant: %v", got, want) + } +} + +func makeMsgHolder(msg *pb.PubSubMessage, receiver ...*testPublishResultReceiver) *messageHolder { + h := &messageHolder{ + msg: msg, + size: proto.Size(msg), + } + if len(receiver) > 0 { + h.onResult = receiver[0].set + } + return h +} + +func TestPublishBatcherAddMessage(t *testing.T) { + const initAvailableBytes = MaxPublishMessageBytes + 1 + settings := DefaultPublishSettings + settings.BufferedByteLimit = initAvailableBytes + + receiver := newTestPublishBatchReceiver(t) + batcher := newPublishMessageBatcher(&settings, 0, receiver.onNewBatch) + + if got, want := batcher.availableBufferBytes, initAvailableBytes; got != want { + t.Errorf("availableBufferBytes: got %d, want %d", got, want) + } + + t.Run("small messages", func(t *testing.T) { + msg1 := &pb.PubSubMessage{Data: []byte("foo")} + msgSize1 := proto.Size(msg1) + if err := batcher.AddMessage(msg1, nil); err != nil { + t.Errorf("AddMessage(%v) got err: %v", msg1, err) + } + if got, want := batcher.availableBufferBytes, initAvailableBytes-msgSize1; got != want { + t.Errorf("availableBufferBytes: got %d, want %d", got, want) + } + + msg2 := &pb.PubSubMessage{Data: []byte("hello world")} + msgSize2 := proto.Size(msg2) + if err := batcher.AddMessage(msg2, nil); err != nil { + t.Errorf("AddMessage(%v) got err: %v", msg2, err) + } + if got, want := batcher.availableBufferBytes, initAvailableBytes-msgSize1-msgSize2; got != want { + t.Errorf("availableBufferBytes: got %d, want %d", got, want) + } + }) + + t.Run("oversized message", func(t *testing.T) { + msg := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'0'}, MaxPublishMessageBytes)} + if gotErr, wantMsg := batcher.AddMessage(msg, nil), "MaxPublishMessageBytes"; !test.ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("AddMessage(%v) got err: %v, want err msg: %q", msg, gotErr, wantMsg) + } + }) + + t.Run("buffer overflow", func(t *testing.T) { + msg := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'1'}, batcher.availableBufferBytes)} + if gotErr, wantErr := batcher.AddMessage(msg, nil), ErrOverflow; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("AddMessage(%v) got err: %v, want err: %v", msg, gotErr, wantErr) + } + }) +} + +func TestPublishBatcherBundlerCountThreshold(t *testing.T) { + settings := DefaultPublishSettings + settings.DelayThreshold = time.Minute // Batching delay disabled + settings.CountThreshold = 2 + + // Batch 1 + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + wantBatch1 := &publishBatch{ + []*messageHolder{makeMsgHolder(msg1), makeMsgHolder(msg2)}, + } + + // Batch 2 + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + msg4 := &pb.PubSubMessage{Data: []byte{'4'}} + wantBatch2 := &publishBatch{ + []*messageHolder{makeMsgHolder(msg3), makeMsgHolder(msg4)}, + } + + // Batch 3 + msg5 := &pb.PubSubMessage{Data: []byte{'5'}} + wantBatch3 := &publishBatch{ + []*messageHolder{makeMsgHolder(msg5)}, + } + + receiver := newTestPublishBatchReceiver(t) + batcher := newPublishMessageBatcher(&settings, 0, receiver.onNewBatch) + + msgs := []*pb.PubSubMessage{msg1, msg2, msg3, msg4, msg5} + for _, msg := range msgs { + if err := batcher.AddMessage(msg, nil); err != nil { + t.Errorf("AddMessage(%v) got err: %v", msg, err) + } + } + batcher.Flush() + + receiver.ValidateBatches([]*publishBatch{wantBatch1, wantBatch2, wantBatch3}) +} + +func TestPublishBatcherBundlerBatchingDelay(t *testing.T) { + settings := DefaultPublishSettings + settings.DelayThreshold = 5 * time.Millisecond + + // Batch 1 + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + wantBatch1 := &publishBatch{ + []*messageHolder{makeMsgHolder(msg1)}, + } + + // Batch 2 + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + wantBatch2 := &publishBatch{ + []*messageHolder{makeMsgHolder(msg2)}, + } + + receiver := newTestPublishBatchReceiver(t) + batcher := newPublishMessageBatcher(&settings, 0, receiver.onNewBatch) + + if err := batcher.AddMessage(msg1, nil); err != nil { + t.Errorf("AddMessage(%v) got err: %v", msg1, err) + } + time.Sleep(settings.DelayThreshold * 2) + if err := batcher.AddMessage(msg2, nil); err != nil { + t.Errorf("AddMessage(%v) got err: %v", msg2, err) + } + batcher.Flush() + + receiver.ValidateBatches([]*publishBatch{wantBatch1, wantBatch2}) +} + +func TestPublishBatcherBundlerOnPermanentError(t *testing.T) { + receiver := newTestPublishBatchReceiver(t) + batcher := newPublishMessageBatcher(&DefaultPublishSettings, 0, receiver.onNewBatch) + + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + pubResult1 := newTestPublishResultReceiver(t, msg1) + pubResult2 := newTestPublishResultReceiver(t, msg2) + batcher.AddBatch(&publishBatch{ + []*messageHolder{ + makeMsgHolder(msg1, pubResult1), + makeMsgHolder(msg2, pubResult2), + }, + }) + + wantErr := status.Error(codes.FailedPrecondition, "failed") + batcher.OnPermanentError(wantErr) + pubResult1.ValidateError(wantErr) + pubResult2.ValidateError(wantErr) +} + +func TestPublishBatcherBundlerOnPublishResponse(t *testing.T) { + const partition = 2 + receiver := newTestPublishBatchReceiver(t) + batcher := newPublishMessageBatcher(&DefaultPublishSettings, partition, receiver.onNewBatch) + + t.Run("empty in-flight batches", func(t *testing.T) { + if gotErr, wantErr := batcher.OnPublishResponse(0), errPublishQueueEmpty; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("OnPublishResponse() got err: %v, want err: %v", gotErr, wantErr) + } + }) + + t.Run("set publish results", func(t *testing.T) { + // Batch 1 + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + + // Batch 2 + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + pubResult1 := newTestPublishResultReceiver(t, msg1) + pubResult2 := newTestPublishResultReceiver(t, msg2) + pubResult3 := newTestPublishResultReceiver(t, msg3) + + batcher.AddBatch(&publishBatch{ + []*messageHolder{ + makeMsgHolder(msg1, pubResult1), + makeMsgHolder(msg2, pubResult2), + }, + }) + batcher.AddBatch(&publishBatch{ + []*messageHolder{ + makeMsgHolder(msg3, pubResult3), + }, + }) + if err := batcher.OnPublishResponse(70); err != nil { + t.Errorf("OnPublishResponse() got err: %v", err) + } + if err := batcher.OnPublishResponse(80); err != nil { + t.Errorf("OnPublishResponse() got err: %v", err) + } + + pubResult1.ValidateResult(partition, 70) + pubResult2.ValidateResult(partition, 71) + pubResult3.ValidateResult(partition, 80) + }) + + t.Run("inconsistent offset", func(t *testing.T) { + msg := &pb.PubSubMessage{Data: []byte{'4'}} + pubResult := newTestPublishResultReceiver(t, msg) + batcher.AddBatch(&publishBatch{ + []*messageHolder{ + makeMsgHolder(msg, pubResult), + }, + }) + + if gotErr, wantMsg := batcher.OnPublishResponse(80), "inconsistent start offset = 80"; !test.ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("OnPublishResponse() got err: %v, want err msg: %q", gotErr, wantMsg) + } + }) +} diff --git a/pubsublite/internal/wire/publisher.go b/pubsublite/internal/wire/publisher.go new file mode 100644 index 00000000000..8c5e9adbed1 --- /dev/null +++ b/pubsublite/internal/wire/publisher.go @@ -0,0 +1,259 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "context" + "errors" + "reflect" + + "google.golang.org/grpc" + + vkit "cloud.google.com/go/pubsublite/apiv1" + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +var ( + errInvalidInitialPubResponse = errors.New("pubsublite: first response from server was not an initial response for publish") + errInvalidMsgPubResponse = errors.New("pubsublite: received invalid publish response from server") +) + +// singlePartitionPublisher publishes messages to a single topic partition. +// +// Life of a successfully published message: +// - Publish() receives the message from the user. +// - It is added to `batcher.msgBundler`, which performs batching in accordance +// with user-configured PublishSettings. +// - onNewBatch() receives new message batches from the bundler. The batch is +// added to `batcher.publishQueue` (in-flight batches) and sent to the publish +// stream, if connected. If the stream is currently reconnecting, the entire +// queue is resent to the stream immediately after it has reconnected, in +// onStreamStatusChange(). +// - onResponse() receives the first cursor offset for the first batch in +// `batcher.publishQueue`. It assigns the cursor offsets for each message and +// releases the publish results to the user. +// +// See comments for unsafeInitiateShutdown() for error scenarios. +type singlePartitionPublisher struct { + // Immutable after creation. + pubClient *vkit.PublisherClient + topic topicPartition + initialReq *pb.PublishRequest + + // Fields below must be guarded with mu. + stream *retryableStream + batcher *publishMessageBatcher + enableSendToStream bool + + abstractService +} + +// singlePartitionPublisherFactory creates instances of singlePartitionPublisher +// for given partition numbers. +type singlePartitionPublisherFactory struct { + ctx context.Context + pubClient *vkit.PublisherClient + settings PublishSettings + topicPath string +} + +func (f *singlePartitionPublisherFactory) New(partition int) *singlePartitionPublisher { + pp := &singlePartitionPublisher{ + pubClient: f.pubClient, + topic: topicPartition{Path: f.topicPath, Partition: partition}, + initialReq: &pb.PublishRequest{ + RequestType: &pb.PublishRequest_InitialRequest{ + InitialRequest: &pb.InitialPublishRequest{ + Topic: f.topicPath, + Partition: int64(partition), + }, + }, + }, + } + pp.batcher = newPublishMessageBatcher(&f.settings, partition, pp.onNewBatch) + pp.stream = newRetryableStream(f.ctx, pp, f.settings.Timeout, reflect.TypeOf(pb.PublishResponse{})) + return pp +} + +// Start attempts to establish a publish stream connection. +func (pp *singlePartitionPublisher) Start() { + pp.mu.Lock() + defer pp.mu.Unlock() + + if pp.unsafeUpdateStatus(serviceStarting, nil) { + pp.stream.Start() + } +} + +// Stop initiates shutdown of the publisher. All pending messages are flushed. +func (pp *singlePartitionPublisher) Stop() { + pp.mu.Lock() + defer pp.mu.Unlock() + pp.unsafeInitiateShutdown(serviceTerminating, nil) +} + +// Publish a pub/sub message. +func (pp *singlePartitionPublisher) Publish(msg *pb.PubSubMessage, onResult PublishResultFunc) { + pp.mu.Lock() + defer pp.mu.Unlock() + + processMessage := func() error { + if err := pp.unsafeCheckServiceStatus(); err != nil { + return err + } + if err := pp.batcher.AddMessage(msg, onResult); err != nil { + return err + } + return nil + } + + // If the new message cannot be published, flush pending messages and then + // terminate the stream once results are received. + if err := processMessage(); err != nil { + pp.unsafeInitiateShutdown(serviceTerminating, err) + onResult(nil, err) + } +} + +func (pp *singlePartitionPublisher) newStream(ctx context.Context) (grpc.ClientStream, error) { + return pp.pubClient.Publish(addTopicRoutingMetadata(ctx, pp.topic)) +} + +func (pp *singlePartitionPublisher) initialRequest() (interface{}, bool) { + return pp.initialReq, true +} + +func (pp *singlePartitionPublisher) validateInitialResponse(response interface{}) error { + pubResponse, _ := response.(*pb.PublishResponse) + if pubResponse.GetInitialResponse() == nil { + return errInvalidInitialPubResponse + } + return nil +} + +func (pp *singlePartitionPublisher) onStreamStatusChange(status streamStatus) { + pp.mu.Lock() + defer pp.mu.Unlock() + + switch status { + case streamReconnecting: + // Prevent onNewBatch() from sending any new batches to the stream. + pp.enableSendToStream = false + + case streamConnected: + pp.unsafeUpdateStatus(serviceActive, nil) + + // To ensure messages are sent in order, we should resend in-flight batches + // to the stream immediately after reconnecting, before any new batches. + batches := pp.batcher.InFlightBatches() + for _, batch := range batches { + if !pp.stream.Send(batch.ToPublishRequest()) { + return + } + } + pp.enableSendToStream = true + + case streamTerminated: + pp.unsafeInitiateShutdown(serviceTerminated, pp.stream.Error()) + } +} + +func (pp *singlePartitionPublisher) onNewBatch(batch *publishBatch) { + pp.mu.Lock() + defer pp.mu.Unlock() + + pp.batcher.AddBatch(batch) + if pp.enableSendToStream { + // Note: if the underlying stream is reconnecting or Send() fails, all + // in-flight batches will be sent to the stream once the connection has been + // re-established. Thus the return value is ignored. + pp.stream.Send(batch.ToPublishRequest()) + } +} + +func (pp *singlePartitionPublisher) onResponse(response interface{}) { + pp.mu.Lock() + defer pp.mu.Unlock() + + processResponse := func() error { + pubResponse, _ := response.(*pb.PublishResponse) + if pubResponse.GetMessageResponse() == nil { + return errInvalidMsgPubResponse + } + firstOffset := pubResponse.GetMessageResponse().GetStartCursor().GetOffset() + if err := pp.batcher.OnPublishResponse(firstOffset); err != nil { + return err + } + pp.unsafeCheckDone() + return nil + } + if err := processResponse(); err != nil { + pp.unsafeInitiateShutdown(serviceTerminated, err) + } +} + +// unsafeInitiateShutdown must be provided a target serviceStatus, which must be +// one of: +// * serviceTerminating: attempts to successfully publish all pending messages +// before terminating the publisher. Occurs when: +// - The user calls Stop(). +// - A new message fails preconditions. This should block the publish of +// subsequent messages to ensure ordering, but all pending messages should +// be flushed. +// * serviceTerminated: immediately terminates the publisher and errors all +// in-flight batches and pending messages in the bundler. Occurs when: +// - The publish stream terminates with a non-retryable error. +// - An inconsistency is detected in the server's publish responses. Assume +// there is a bug on the server and terminate the publisher, as correct +// processing of messages cannot be guaranteed. +// +// Expected to be called with singlePartitionPublisher.mu held. +func (pp *singlePartitionPublisher) unsafeInitiateShutdown(targetStatus serviceStatus, err error) { + if !pp.unsafeUpdateStatus(targetStatus, err) { + return + } + + // Close the stream if this is an immediate shutdown. Otherwise leave it open + // to send pending messages. + if targetStatus == serviceTerminated { + pp.enableSendToStream = false + pp.stream.Stop() + } + + // Bundler.Flush() blocks and invokes onNewBatch(), which acquires the mutex, + // so it cannot be held here. + // Updating the publisher status above prevents any new messages from being + // added to the Bundler after flush. + pp.mu.Unlock() + pp.batcher.Flush() + pp.mu.Lock() + + // If flushing pending messages, close the stream if there's nothing left to + // publish. + if targetStatus == serviceTerminating { + pp.unsafeCheckDone() + return + } + + // For immediate shutdown set the error message for all pending messages. + pp.batcher.OnPermanentError(err) +} + +// unsafeCheckDone closes the stream once all pending messages have been +// published during shutdown. +func (pp *singlePartitionPublisher) unsafeCheckDone() { + if pp.status == serviceTerminating && pp.batcher.InFlightBatchesEmpty() { + pp.stream.Stop() + } +} diff --git a/pubsublite/internal/wire/publisher_test.go b/pubsublite/internal/wire/publisher_test.go new file mode 100644 index 00000000000..7c5e2450fb8 --- /dev/null +++ b/pubsublite/internal/wire/publisher_test.go @@ -0,0 +1,447 @@ +// Copyright 2020 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and + +package wire + +import ( + "bytes" + "context" + "testing" + "time" + + "cloud.google.com/go/pubsublite/internal/test" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + pb "google.golang.org/genproto/googleapis/cloud/pubsublite/v1" +) + +func testPublishSettings() PublishSettings { + settings := DefaultPublishSettings + // Send 1 message at a time to make tests deterministic. + settings.CountThreshold = 1 + // Send messages with minimal delay to speed up tests. + settings.DelayThreshold = time.Millisecond + settings.Timeout = 5 * time.Second + return settings +} + +// testPartitionPublisher wraps a singlePartitionPublisher for ease of testing. +type testPartitionPublisher struct { + pub *singlePartitionPublisher + serviceTestProxy +} + +func newTestSinglePartitionPublisher(t *testing.T, topic topicPartition, settings PublishSettings) *testPartitionPublisher { + ctx := context.Background() + pubClient, err := newPublisherClient(ctx, "ignored", testClientOpts...) + if err != nil { + t.Fatal(err) + } + + pubFactory := &singlePartitionPublisherFactory{ + ctx: ctx, + pubClient: pubClient, + settings: settings, + topicPath: topic.Path, + } + tp := &testPartitionPublisher{ + pub: pubFactory.New(topic.Partition), + } + tp.initAndStart(t, tp.pub, "Publisher") + return tp +} + +func (tp *testPartitionPublisher) Publish(msg *pb.PubSubMessage) *testPublishResultReceiver { + result := newTestPublishResultReceiver(tp.t, msg) + tp.pub.Publish(msg, result.set) + return result +} + +func (tp *testPartitionPublisher) FinalError() (err error) { + err = tp.serviceTestProxy.FinalError() + + // Verify that the stream has terminated. + if gotStatus, wantStatus := tp.pub.stream.Status(), streamTerminated; gotStatus != wantStatus { + tp.t.Errorf("%s retryableStream status: %v, want: %v", tp.name, gotStatus, wantStatus) + } + if tp.pub.stream.currentStream() != nil { + tp.t.Errorf("%s client stream should be nil", tp.name) + } + return +} + +func TestSinglePartitionPublisherInvalidInitialResponse(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), msgPubResp(0), nil) // Publish response instead of initial response + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + + wantErr := errInvalidInitialPubResponse + if gotErr := pub.StartError(); !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Start() got err: (%v), want: (%v)", gotErr, wantErr) + } + if gotErr := pub.FinalError(); !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSinglePartitionPublisherSpuriousPublishResponse(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + barrier := stream.PushWithBarrier(nil, msgPubResp(0), nil) // Publish response with no messages + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + // Send after startup to ensure the test is deterministic. + barrier.Release() + if gotErr, wantErr := pub.FinalError(), errPublishQueueEmpty; !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSinglePartitionPublisherBatching(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + settings := testPublishSettings() + settings.DelayThreshold = time.Minute // Batching delay disabled, tested elsewhere + settings.CountThreshold = 3 + + // Batch 1 + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + + // Batch 2 + msg4 := &pb.PubSubMessage{Data: []byte{'3'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + stream.Push(msgPubReq(msg1, msg2, msg3), msgPubResp(0), nil) + stream.Push(msgPubReq(msg4), msgPubResp(33), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, settings) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result2 := pub.Publish(msg2) + result3 := pub.Publish(msg3) + result4 := pub.Publish(msg4) + // Stop flushes pending messages. + pub.Stop() + + result1.ValidateResult(topic.Partition, 0) + result2.ValidateResult(topic.Partition, 1) + result3.ValidateResult(topic.Partition, 2) + result4.ValidateResult(topic.Partition, 33) + + if gotErr := pub.FinalError(); gotErr != nil { + t.Errorf("Publisher final err: (%v), want: ", gotErr) + } +} + +func TestSinglePartitionPublisherResendMessages(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + + verifiers := test.NewVerifiers(t) + + // Simulate a transient error that results in a reconnect before any server + // publish responses are received. + stream1 := test.NewRPCVerifier(t) + stream1.Push(initPubReq(topic), initPubResp(), nil) + stream1.Push(msgPubReq(msg1), nil, nil) + stream1.Push(msgPubReq(msg2), nil, status.Error(codes.Aborted, "server aborted")) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream1) + + // The publisher should resend all in-flight batches to the second stream. + stream2 := test.NewRPCVerifier(t) + stream2.Push(initPubReq(topic), initPubResp(), nil) + stream2.Push(msgPubReq(msg1), msgPubResp(0), nil) + stream2.Push(msgPubReq(msg2), msgPubResp(1), nil) + stream2.Push(msgPubReq(msg3), msgPubResp(2), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream2) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + defer pub.StopVerifyNoError() + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result2 := pub.Publish(msg2) + result1.ValidateResult(topic.Partition, 0) + result2.ValidateResult(topic.Partition, 1) + + result3 := pub.Publish(msg3) + result3.ValidateResult(topic.Partition, 2) +} + +func TestSinglePartitionPublisherPublishPermanentError(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + permError := status.Error(codes.NotFound, "topic deleted") + + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + stream.Push(msgPubReq(msg1), nil, permError) // Permanent error terminates publisher + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result2 := pub.Publish(msg2) + result1.ValidateError(permError) + result2.ValidateError(permError) + + // This message arrives after the publisher has already stopped, so its error + // message is ErrServiceStopped. + result3 := pub.Publish(msg3) + result3.ValidateError(ErrServiceStopped) + + if gotErr := pub.FinalError(); !test.ErrorEqual(gotErr, permError) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, permError) + } +} + +func TestSinglePartitionPublisherBufferOverflow(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + settings := testPublishSettings() + settings.BufferedByteLimit = 15 + + msg1 := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'1'}, 10)} + msg2 := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'2'}, 10)} // Causes overflow + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + barrier := stream.PushWithBarrier(msgPubReq(msg1), msgPubResp(0), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, settings) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + // Overflow is detected, which terminates the publisher, but previous messages + // are flushed. + result2 := pub.Publish(msg2) + // Delay the server response for the first Publish to verify that it is + // allowed to complete. + barrier.Release() + // This message arrives after the publisher has already stopped, so its error + // message is ErrServiceStopped. + result3 := pub.Publish(msg3) + + result1.ValidateResult(topic.Partition, 0) + result2.ValidateError(ErrOverflow) + result3.ValidateError(ErrServiceStopped) + + if gotErr := pub.FinalError(); !test.ErrorEqual(gotErr, ErrOverflow) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, ErrOverflow) + } +} + +func TestSinglePartitionPublisherBufferRefill(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + settings := testPublishSettings() + settings.BufferedByteLimit = 15 + + msg1 := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'1'}, 10)} + msg2 := &pb.PubSubMessage{Data: bytes.Repeat([]byte{'2'}, 10)} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + stream.Push(msgPubReq(msg1), msgPubResp(0), nil) + stream.Push(msgPubReq(msg2), msgPubResp(1), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, settings) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result1.ValidateResult(topic.Partition, 0) + + // No overflow because msg2 is sent after the response for msg1 is received. + result2 := pub.Publish(msg2) + result2.ValidateResult(topic.Partition, 1) + + pub.StopVerifyNoError() +} + +func TestSinglePartitionPublisherInvalidCursorOffsets(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + barrier := stream.PushWithBarrier(msgPubReq(msg1), msgPubResp(4), nil) + // The server returns an inconsistent cursor offset for msg2, which causes the + // publisher client to fail permanently. + stream.Push(msgPubReq(msg2), msgPubResp(4), nil) + stream.Push(msgPubReq(msg3), msgPubResp(5), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result2 := pub.Publish(msg2) + result3 := pub.Publish(msg3) + barrier.Release() + + result1.ValidateResult(topic.Partition, 4) + + // msg2 and subsequent messages are errored. + wantMsg := "server returned publish response with inconsistent start offset" + result2.ValidateErrorMsg(wantMsg) + result3.ValidateErrorMsg(wantMsg) + if gotErr := pub.FinalError(); !test.ErrorHasMsg(gotErr, wantMsg) { + t.Errorf("Publisher final err: (%v), want msg: %q", gotErr, wantMsg) + } +} + +func TestSinglePartitionPublisherInvalidServerPublishResponse(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + msg := &pb.PubSubMessage{Data: []byte{'1'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + // Server sends duplicate initial publish response, which causes the publisher + // client to fail permanently. + stream.Push(msgPubReq(msg), initPubResp(), nil) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result := pub.Publish(msg) + + wantErr := errInvalidMsgPubResponse + result.ValidateError(wantErr) + if gotErr := pub.FinalError(); !test.ErrorEqual(gotErr, wantErr) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, wantErr) + } +} + +func TestSinglePartitionPublisherStopFlushesMessages(t *testing.T) { + topic := topicPartition{"projects/123456/locations/us-central1-b/topics/my-topic", 0} + finalErr := status.Error(codes.FailedPrecondition, "invalid message") + + msg1 := &pb.PubSubMessage{Data: []byte{'1'}} + msg2 := &pb.PubSubMessage{Data: []byte{'2'}} + msg3 := &pb.PubSubMessage{Data: []byte{'3'}} + msg4 := &pb.PubSubMessage{Data: []byte{'4'}} + + verifiers := test.NewVerifiers(t) + stream := test.NewRPCVerifier(t) + stream.Push(initPubReq(topic), initPubResp(), nil) + barrier := stream.PushWithBarrier(msgPubReq(msg1), msgPubResp(5), nil) + stream.Push(msgPubReq(msg2), msgPubResp(6), nil) + stream.Push(msgPubReq(msg3), nil, finalErr) + verifiers.AddPublishStream(topic.Path, topic.Partition, stream) + + mockServer.OnTestStart(verifiers) + defer mockServer.OnTestEnd() + + pub := newTestSinglePartitionPublisher(t, topic, testPublishSettings()) + if gotErr := pub.StartError(); gotErr != nil { + t.Errorf("Start() got err: (%v)", gotErr) + } + + result1 := pub.Publish(msg1) + result2 := pub.Publish(msg2) + result3 := pub.Publish(msg3) + pub.Stop() + barrier.Release() + result4 := pub.Publish(msg4) + + // First 2 messages should be allowed to complete. + result1.ValidateResult(topic.Partition, 5) + result2.ValidateResult(topic.Partition, 6) + // msg3 failed with a server error, which should result in the publisher + // terminating with an error. + result3.ValidateError(finalErr) + // msg4 was sent after the user called Stop(), so should fail immediately with + // ErrServiceStopped. + result4.ValidateError(ErrServiceStopped) + + if gotErr := pub.FinalError(); !test.ErrorEqual(gotErr, finalErr) { + t.Errorf("Publisher final err: (%v), want: (%v)", gotErr, finalErr) + } +}