diff --git a/.github/scripts/test-info.mjs b/.github/scripts/test-info.mjs index 36489a8362..4b1268e1d8 100644 --- a/.github/scripts/test-info.mjs +++ b/.github/scripts/test-info.mjs @@ -310,13 +310,13 @@ const components = { 'conformance-pubsub.aws.snssqs.terraform-destroy.sh', sourcePkg: 'pubsub/aws/snssqs', }, - // 'pubsub.gcp.pubsub': { - // certification: true, - // requireTerraform: true, - // requireGCPCredentials: true, - // certificationSetup: 'certification-pubsub.gcp.pubsub-setup.sh', - // certificationDestroy: 'certification-pubsub.gcp.pubsub-destroy.sh', - // }, + 'pubsub.gcp.pubsub': { + certification: true, + requireTerraform: true, + requireGCPCredentials: true, + certificationSetup: 'certification-pubsub.gcp.pubsub-setup.sh', + certificationDestroy: 'certification-pubsub.gcp.pubsub-destroy.sh', + }, // 'pubsub.gcp.pubsub.docker': { // conformance: true, // conformanceSetup: 'docker-compose.sh gcp-pubsub', @@ -709,11 +709,11 @@ const components = { requireGCPCredentials: true, conformanceSetup: 'conformance-state.gcp.firestore-setup.sh', }, - // 'state.gcp.firestore': { - // certification: true, - // requireGCPCredentials: true, - // certificationSetup: 'certification-state.gcp.firestore-setup.sh', - // }, + 'state.gcp.firestore': { + certification: true, + requireGCPCredentials: true, + certificationSetup: 'certification-state.gcp.firestore-setup.sh', + }, 'workflows.temporal': { conformance: true, conformanceSetup: 'docker-compose.sh temporal', diff --git a/pubsub/gcp/pubsub/pubsub.go b/pubsub/gcp/pubsub/pubsub.go index 43db539871..39621b3894 100644 --- a/pubsub/gcp/pubsub/pubsub.go +++ b/pubsub/gcp/pubsub/pubsub.go @@ -124,6 +124,9 @@ func (g *GCPPubSub) getPubSubClient(ctx context.Context, metadata *metadata) (*g var pubsubClient *gcppubsub.Client var err error + // context.Background is used here, as this the context used to Dial the + // server in the gRPC DialPool. Callers should always call `Close` on the + // component to ensure all resources are released. if metadata.PrivateKeyID != "" { // TODO: validate that all auth json fields are filled authJSON := &GCPAuthJSON{ @@ -141,7 +144,7 @@ func (g *GCPPubSub) getPubSubClient(ctx context.Context, metadata *metadata) (*g gcpCompatibleJSON, _ := json.Marshal(authJSON) g.logger.Debugf("Using explicit credentials for GCP") clientOptions := option.WithCredentialsJSON(gcpCompatibleJSON) - pubsubClient, err = gcppubsub.NewClient(ctx, metadata.ProjectID, clientOptions) + pubsubClient, err = gcppubsub.NewClient(context.Background(), metadata.ProjectID, clientOptions) if err != nil { return pubsubClient, err } @@ -156,7 +159,7 @@ func (g *GCPPubSub) getPubSubClient(ctx context.Context, metadata *metadata) (*g g.logger.Debugf("setting GCP PubSub Emulator environment variable to 'PUBSUB_EMULATOR_HOST=%s'", metadata.ConnectionEndpoint) os.Setenv("PUBSUB_EMULATOR_HOST", metadata.ConnectionEndpoint) } - pubsubClient, err = gcppubsub.NewClient(ctx, metadata.ProjectID) + pubsubClient, err = gcppubsub.NewClient(context.Background(), metadata.ProjectID) if err != nil { return pubsubClient, err } diff --git a/state/gcp/firestore/firestore.go b/state/gcp/firestore/firestore.go index efda8e7d9c..79c2bbcca9 100644 --- a/state/gcp/firestore/firestore.go +++ b/state/gcp/firestore/firestore.go @@ -211,10 +211,21 @@ func getFirestoreMetadata(meta state.Metadata) (*firestoreMetadata, error) { return &m, nil } +func (f *Firestore) Close() error { + if f.client != nil { + return f.client.Close() + } + + return nil +} + func getGCPClient(ctx context.Context, metadata *firestoreMetadata, l logger.Logger) (*datastore.Client, error) { var gcpClient *datastore.Client var err error + // context.Background is used here, as this the context used to Dial the + // server in the gRPC DialPool. Callers should always call `Close` on the + // component to ensure all resources are released. if metadata.PrivateKeyID != "" { var b []byte b, err = json.Marshal(metadata) @@ -223,7 +234,7 @@ func getGCPClient(ctx context.Context, metadata *firestoreMetadata, l logger.Log } opt := option.WithCredentialsJSON(b) - gcpClient, err = datastore.NewClient(ctx, metadata.ProjectID, opt) + gcpClient, err = datastore.NewClient(context.Background(), metadata.ProjectID, opt) if err != nil { return nil, err } @@ -238,7 +249,7 @@ func getGCPClient(ctx context.Context, metadata *firestoreMetadata, l logger.Log l.Debugf("setting GCP Datastore Emulator environment variable to 'DATASTORE_EMULATOR_HOST=%s'", metadata.ConnectionEndpoint) os.Setenv("DATASTORE_EMULATOR_HOST", metadata.ConnectionEndpoint) } - gcpClient, err = datastore.NewClient(ctx, metadata.ProjectID) + gcpClient, err = datastore.NewClient(context.Background(), metadata.ProjectID) if err != nil { return nil, err }