From b6a86e2ecbe1a9114e626d4ab1b042c2892ee05a Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 13 Jan 2025 13:08:51 +0100 Subject: [PATCH] [rhythm] Fix ID generator copy bug (#4540) * [rhythm] Fix ID generator copy bug * Add test --- modules/blockbuilder/util/id.go | 2 +- modules/blockbuilder/util/id_test.go | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/blockbuilder/util/id.go b/modules/blockbuilder/util/id.go index 6edfb1db837..f9a556a1292 100644 --- a/modules/blockbuilder/util/id.go +++ b/modules/blockbuilder/util/id.go @@ -39,7 +39,7 @@ func NewDeterministicIDGenerator(tenantID string, seeds ...uint64) *Deterministi func newBuf(tenantID []byte, seeds []uint64) []byte { dl, sl := len(tenantID), len(seeds) data := make([]byte, dl+sl*8+8) // tenantID bytes + 8 bytes per uint64 + 8 bytes for seq - copy(tenantID, data) + copy(data, tenantID) for i, seed := range seeds { binary.LittleEndian.PutUint64(data[dl+i*8:], seed) diff --git a/modules/blockbuilder/util/id_test.go b/modules/blockbuilder/util/id_test.go index 42f4d061853..ad59872af71 100644 --- a/modules/blockbuilder/util/id_test.go +++ b/modules/blockbuilder/util/id_test.go @@ -36,6 +36,18 @@ func TestDeterministicIDGenerator(t *testing.T) { } } +func TestDeterministicIDGeneratorWithDifferentTenants(t *testing.T) { + ts := time.Now().UnixMilli() + seed := uint64(42) + + gen1 := NewDeterministicIDGenerator("tenant-1", seed, uint64(ts)) + gen2 := NewDeterministicIDGenerator("tenant-2", seed, uint64(ts)) + + for i := 0; i < 10; i++ { + assert.NotEqualf(t, gen1.NewID(), gen2.NewID(), "IDs should be different") + } +} + func FuzzDeterministicIDGenerator(f *testing.F) { f.Skip()