From d7671ec5401cf2afee949a506a11c251e9f66d64 Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Sun, 2 Feb 2025 22:25:31 +0200 Subject: [PATCH] feat(spanner): make randIDForProcess hexadecimal in x-goog-spanner-request-id (#11546) Implements a new requirement that randIDForProcess should be a hexadecimal value with the format specifier "%016x". Fixes #11545 --- spanner/request_id_header.go | 2 +- spanner/request_id_header_test.go | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/spanner/request_id_header.go b/spanner/request_id_header.go index 51fa93af8c1a..ec367260a8e2 100644 --- a/spanner/request_id_header.go +++ b/spanner/request_id_header.go @@ -46,7 +46,7 @@ func init() { if err != nil { panic(err) } - randIDForProcess = r64.String() + randIDForProcess = fmt.Sprintf("%016x", r64.Uint64()) } // Please bump this version whenever this implementation diff --git a/spanner/request_id_header_test.go b/spanner/request_id_header_test.go index 84d9f5c39232..5afc68f2c98c 100644 --- a/spanner/request_id_header_test.go +++ b/spanner/request_id_header_test.go @@ -16,6 +16,7 @@ package spanner import ( "context" + "encoding/hex" "encoding/json" "fmt" "math" @@ -1925,3 +1926,13 @@ func TestRequestIDHeader_SingleUseReadOnly_ExecuteStreamingSql_UnavailableDuring t.Fatalf("RequestID streaming segments mismatch: got - want +\n%s", diff) } } + +func TestRequestID_randIDForProcessIsHexadecimal(t *testing.T) { + decoded, err := hex.DecodeString(randIDForProcess) + if err != nil { + t.Fatal(err) + } + if len(decoded) == 0 { + t.Fatal("Expected a non-empty decoded result") + } +}