From 9e964ddc01a54819f25435cfcc9d5b37c91f5a1d Mon Sep 17 00:00:00 2001 From: rahul2393 Date: Thu, 3 Oct 2024 17:13:01 +0530 Subject: [PATCH] perf(spanner): use passthrough with emulator endpoint (#10947) --- spanner/admin/database/apiv1/init.go | 4 +++- spanner/admin/instance/apiv1/init.go | 4 +++- spanner/client.go | 6 ++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/spanner/admin/database/apiv1/init.go b/spanner/admin/database/apiv1/init.go index 60c19056512d..1638b7d22a67 100644 --- a/spanner/admin/database/apiv1/init.go +++ b/spanner/admin/database/apiv1/init.go @@ -18,6 +18,7 @@ package database import ( "context" "os" + "regexp" "google.golang.org/api/option" "google.golang.org/grpc" @@ -27,8 +28,9 @@ import ( func init() { newDatabaseAdminClientHook = func(ctx context.Context, p clientHookParams) ([]option.ClientOption, error) { if emulator := os.Getenv("SPANNER_EMULATOR_HOST"); emulator != "" { + schemeRemoved := regexp.MustCompile("^(http://|https://|passthrough:///)").ReplaceAllString(emulator, "") return []option.ClientOption{ - option.WithEndpoint(emulator), + option.WithEndpoint("passthrough:///" + schemeRemoved), option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), option.WithoutAuthentication(), }, nil diff --git a/spanner/admin/instance/apiv1/init.go b/spanner/admin/instance/apiv1/init.go index 85046d97191f..e16a18c2f347 100644 --- a/spanner/admin/instance/apiv1/init.go +++ b/spanner/admin/instance/apiv1/init.go @@ -18,6 +18,7 @@ package instance import ( "context" "os" + "regexp" "google.golang.org/api/option" "google.golang.org/grpc" @@ -27,8 +28,9 @@ import ( func init() { newInstanceAdminClientHook = func(ctx context.Context, p clientHookParams) ([]option.ClientOption, error) { if emulator := os.Getenv("SPANNER_EMULATOR_HOST"); emulator != "" { + schemeRemoved := regexp.MustCompile("^(http://|https://|passthrough:///)").ReplaceAllString(emulator, "") return []option.ClientOption{ - option.WithEndpoint(emulator), + option.WithEndpoint("passthrough:///" + schemeRemoved), option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), option.WithoutAuthentication(), }, nil diff --git a/spanner/client.go b/spanner/client.go index 00fefee852f2..95bb7f7a606d 100644 --- a/spanner/client.go +++ b/spanner/client.go @@ -190,8 +190,9 @@ func createGCPMultiEndpoint(cfg *grpcgcp.GCPMultiEndpointOptions, config ClientC } // Append emulator options if SPANNER_EMULATOR_HOST has been set. if emulatorAddr := os.Getenv("SPANNER_EMULATOR_HOST"); emulatorAddr != "" { + schemeRemoved := regexp.MustCompile("^(http://|https://|passthrough:///)").ReplaceAllString(emulatorAddr, "") emulatorOpts := []option.ClientOption{ - option.WithEndpoint(emulatorAddr), + option.WithEndpoint("passthrough:///" + schemeRemoved), option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), option.WithoutAuthentication(), internaloption.SkipDialSettingsValidation(), @@ -403,8 +404,9 @@ func newClientWithConfig(ctx context.Context, database string, config ClientConf // Append emulator options if SPANNER_EMULATOR_HOST has been set. if emulatorAddr := os.Getenv("SPANNER_EMULATOR_HOST"); emulatorAddr != "" { + schemeRemoved := regexp.MustCompile("^(http://|https://|passthrough:///)").ReplaceAllString(emulatorAddr, "") emulatorOpts := []option.ClientOption{ - option.WithEndpoint(emulatorAddr), + option.WithEndpoint("passthrough:///" + schemeRemoved), option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())), option.WithoutAuthentication(), internaloption.SkipDialSettingsValidation(),