From 87c4fb542209a7f62cb9848cedb2fe8bc3bfa5cb Mon Sep 17 00:00:00 2001 From: Gavin Frazar Date: Tue, 9 Sep 2025 18:39:09 -0400 Subject: [PATCH] Update cloud.google.com/go/spanner dependency (#58775) --- go.mod | 2 +- go.sum | 4 +-- lib/srv/db/spanner/protocoltest/test.go | 9 +++++++ lib/srv/db/spanner_test.go | 35 ++++++++++++++++--------- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 41adc467461..df670a361e0 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( cloud.google.com/go/iam v1.5.2 cloud.google.com/go/kms v1.22.0 cloud.google.com/go/resourcemanager v1.10.6 - cloud.google.com/go/spanner v1.83.0 + cloud.google.com/go/spanner v1.85.0 cloud.google.com/go/storage v1.56.1 code.dny.dev/ssrf v0.2.0 connectrpc.com/connect v1.18.1 diff --git a/go.sum b/go.sum index ee6c2380ff8..4ec3a4856e9 100644 --- a/go.sum +++ b/go.sum @@ -548,8 +548,8 @@ cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+ cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/spanner v1.83.0 h1:AH3QIoSIa01l3WbeTppkwCEYFNK1AER6drcYhPmwhxY= -cloud.google.com/go/spanner v1.83.0/go.mod h1:QSWcjxszT0WRHNd8zyGI0WctrYA1N7j0yTFsWyol9Yw= +cloud.google.com/go/spanner v1.85.0 h1:VVO3yW+0+Yx9tg4SQaZvJHGAnU6qCnGXQ3NX4E3+src= +cloud.google.com/go/spanner v1.85.0/go.mod h1:9zhmtOEoYV06nE4Orbin0dc/ugHzZW9yXuvaM61rpxs= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= diff --git a/lib/srv/db/spanner/protocoltest/test.go b/lib/srv/db/spanner/protocoltest/test.go index 51254565218..81e6486aa5a 100644 --- a/lib/srv/db/spanner/protocoltest/test.go +++ b/lib/srv/db/spanner/protocoltest/test.go @@ -254,6 +254,15 @@ func (s *TestServer) Close() error { return nil } +func (s *TestServer) CreateSession(ctx context.Context, req *spannerpb.CreateSessionRequest) (*spannerpb.Session, error) { + return &spannerpb.Session{ + Name: req.GetDatabase() + "/sessions/" + uuid.NewString(), + Labels: req.GetSession().Labels, + CreatorRole: req.GetSession().CreatorRole, + Multiplexed: req.GetSession().Multiplexed, + }, nil +} + func (s *TestServer) BatchCreateSessions(ctx context.Context, req *spannerpb.BatchCreateSessionsRequest) (*spannerpb.BatchCreateSessionsResponse, error) { tpl := req.SessionTemplate if tpl == nil { diff --git a/lib/srv/db/spanner_test.go b/lib/srv/db/spanner_test.go index b9226497d1a..251e97a7fa3 100644 --- a/lib/srv/db/spanner_test.go +++ b/lib/srv/db/spanner_test.go @@ -241,13 +241,18 @@ func TestAuditSpanner(t *testing.T) { reconnectingCh <- clt.ClientConn.WaitForStateChange(ctx, connectivity.Ready) }() + ev := requireEvent(t, testCtx, libevents.DatabaseSessionStartFailureCode) + dbStart1, ok := ev.(*events.DatabaseSessionStart) + require.True(t, ok) + require.Equal(t, "googlesql", dbStart1.DatabaseName) + row, err := pingSpanner(ctx, clt, 42) require.Error(t, err) require.ErrorContains(t, err, "access to db denied") require.Nil(t, row) - ev := requireEvent(t, testCtx, libevents.DatabaseSessionStartFailureCode) - dbStart1, ok := ev.(*events.DatabaseSessionStart) + ev = requireEvent(t, testCtx, libevents.DatabaseSessionStartFailureCode) + dbStart2, ok := ev.(*events.DatabaseSessionStart) require.True(t, ok) require.Equal(t, "googlesql", dbStart1.DatabaseName) @@ -258,7 +263,7 @@ func TestAuditSpanner(t *testing.T) { require.Nil(t, row) ev = requireEvent(t, testCtx, libevents.DatabaseSessionStartFailureCode) - dbStart2, ok := ev.(*events.DatabaseSessionStart) + dbStart3, ok := ev.(*events.DatabaseSessionStart) require.True(t, ok) require.Equal(t, "googlesql", dbStart2.DatabaseName) @@ -267,6 +272,7 @@ func TestAuditSpanner(t *testing.T) { // another start event for the same session, i.e. the client should be // forced to reconnect for subsequent RPC attempts require.NotEqual(t, dbStart1.SessionID, dbStart2.SessionID) + require.NotEqual(t, dbStart1.SessionID, dbStart3.SessionID) // make sure no other events get emitted, including RPC failures, since // a session was never started successfully. @@ -298,15 +304,20 @@ func TestAuditSpanner(t *testing.T) { require.True(t, ok) require.Equal(t, "googlesql", startEvt.DatabaseName) - rpcEvt := requireSpannerRPCEvent(t, testCtx) - require.Equal(t, "BatchCreateSessions", rpcEvt.Procedure) - require.Equal(t, "googlesql", rpcEvt.DatabaseName) - require.Equal(t, startEvt.SessionID, rpcEvt.SessionID) - - rpcEvt = requireSpannerRPCEvent(t, testCtx) - require.Equal(t, "ExecuteStreamingSql", rpcEvt.Procedure) - require.Equal(t, "googlesql", rpcEvt.DatabaseName) - require.Equal(t, startEvt.SessionID, rpcEvt.SessionID) + eventsByProcedure := map[string][]*events.SpannerRPC{} + for range 3 { + rpcEvt := requireSpannerRPCEvent(t, testCtx) + eventsByProcedure[rpcEvt.Procedure] = append(eventsByProcedure[rpcEvt.Procedure], rpcEvt) + } + require.Contains(t, eventsByProcedure, "BatchCreateSessions") + require.Contains(t, eventsByProcedure, "CreateSession") + require.Contains(t, eventsByProcedure, "ExecuteStreamingSql") + for name, rpcEvts := range eventsByProcedure { + require.Len(t, rpcEvts, 1) + rpcEvt := rpcEvts[0] + require.Equal(t, "googlesql", rpcEvt.DatabaseName, "RPC %v database name should match what was requested", name) + require.Equal(t, startEvt.SessionID, rpcEvt.SessionID, "RPC %v session ID should match the start event session ID", name) + } // Client disconnects. clt.Close()