spanner: session client should return Spanner errors
The session client would return non-Spanner errors to the session
consumer when a context error or a gRPC error would occur.
Updates #1719.
Change-Id: Ife5b6cc503609404a9b8abed290fdb1932b29a56
Reviewed-on: https://code-review.googlesource.com/c/gocloud/+/50231
Reviewed-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Shanika Kuruppu <skuruppu@google.com>
diff --git a/spanner/sessionclient.go b/spanner/sessionclient.go
index 68b5b49..1f551e3 100644
--- a/spanner/sessionclient.go
+++ b/spanner/sessionclient.go
@@ -191,7 +191,7 @@
}
if ctx.Err() != nil {
trace.TracePrintf(ctx, nil, "Context error while creating a batch of %d sessions: %v", createCount, ctx.Err())
- consumer.sessionCreationFailed(ctx.Err(), remainingCreateCount)
+ consumer.sessionCreationFailed(toSpannerError(ctx.Err()), remainingCreateCount)
break
}
response, err := client.BatchCreateSessions(ctx, &sppb.BatchCreateSessionsRequest{
@@ -201,7 +201,7 @@
})
if err != nil {
trace.TracePrintf(ctx, nil, "Error creating a batch of %d sessions: %v", remainingCreateCount, err)
- consumer.sessionCreationFailed(err, remainingCreateCount)
+ consumer.sessionCreationFailed(toSpannerError(err), remainingCreateCount)
break
}
actuallyCreated := int32(len(response.Session))
diff --git a/spanner/sessionclient_test.go b/spanner/sessionclient_test.go
index 13b61c7..802d42b 100644
--- a/spanner/sessionclient_test.go
+++ b/spanner/sessionclient_test.go
@@ -308,7 +308,7 @@
}
for _, e := range consumer.errors {
if g, w := status.Code(e.err), codes.DeadlineExceeded; g != w {
- t.Fatalf("Error code mismatch\ngot: %v\nwant: %v", g, w)
+ t.Fatalf("Error code mismatch\ngot: %v (%s)\nwant: %v", g, e.err, w)
}
}
client.Close()