diff --git a/sdk/internal/recording/recording.go b/sdk/internal/recording/recording.go index 3dbe4012226d..f020a8988955 100644 --- a/sdk/internal/recording/recording.go +++ b/sdk/internal/recording/recording.go @@ -211,7 +211,20 @@ func (r *Recording) Now() time.Time { func (r *Recording) UUID() uuid.UUID { r.initRandomSource() - return uuid.FromSource(r.src) + if r.Mode == Live { + return uuid.New() + } + + u := uuid.UUID{} + // Set all bits to randomly (or pseudo-randomly) chosen values. + // math/rand.Read() is no-fail so we omit any error checking. + rnd := rand.New(r.src) + rnd.Read(u[:]) + u[8] = (u[8] | 0x40) & 0x7F // u.setVariant(ReservedRFC4122) + + var version byte = 4 + u[6] = (u[6] & 0xF) | (version << 4) // u.setVersion(4) + return u } // GenerateAlphaNumericID will generate a recorded random alpha numeric id