From 52d745fc65b7eb643059e0abc01ea2df099d3c4e Mon Sep 17 00:00:00 2001 From: Ashwanth Date: Fri, 27 Dec 2024 22:43:57 +0530 Subject: [PATCH] fix(blockbuilder): copy entries returned by record decoder (#15549) --- pkg/blockbuilder/builder/builder.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/blockbuilder/builder/builder.go b/pkg/blockbuilder/builder/builder.go index ad981e3183..f0c2f2ed30 100644 --- a/pkg/blockbuilder/builder/builder.go +++ b/pkg/blockbuilder/builder/builder.go @@ -20,6 +20,7 @@ import ( "github.com/grafana/loki/v3/pkg/compression" "github.com/grafana/loki/v3/pkg/kafka" "github.com/grafana/loki/v3/pkg/kafka/partition" + "github.com/grafana/loki/v3/pkg/logproto" "github.com/grafana/loki/v3/pkg/storage/chunk" "github.com/grafana/loki/v3/pkg/storage/config" "github.com/grafana/loki/v3/pkg/storage/stores" @@ -546,11 +547,15 @@ func (i *BlockBuilder) loadRecords(ctx context.Context, partitionID int32, offse continue } + // decorder reuses entries slice, so we need to copy it + entries := make([]logproto.Entry, len(stream.Entries)) + copy(entries, stream.Entries) + converted = append(converted, AppendInput{ tenant: record.TenantID, labels: labels, labelsStr: stream.Labels, - entries: stream.Entries, + entries: entries, }) }