diff --git a/tsdb/compact.go b/tsdb/compact.go index 6063e4a5f1..7c721de3ee 100644 --- a/tsdb/compact.go +++ b/tsdb/compact.go @@ -1176,13 +1176,17 @@ func (c *LeveledCompactor) populateSymbols(sets []storage.ChunkSeriesSet, outBlo obIx = labels.StableHash(s.Labels()) % uint64(len(outBlocks)) } - for _, l := range s.Labels() { + err := s.Labels().Validate(func(l labels.Label) error { if err := batchers[obIx].addSymbol(l.Name); err != nil { return errors.Wrap(err, "addSymbol to batcher") } if err := batchers[obIx].addSymbol(l.Value); err != nil { return errors.Wrap(err, "addSymbol to batcher") } + return nil + }) + if err != nil { + return err } } diff --git a/tsdb/compact_test.go b/tsdb/compact_test.go index f331adb675..4db5f3b178 100644 --- a/tsdb/compact_test.go +++ b/tsdb/compact_test.go @@ -596,10 +596,10 @@ func TestCompaction_CompactWithSplitting(t *testing.T) { require.Equal(t, uint64(shardIndex), lbls.Labels().Hash()%shardCount) // Collect all symbols used by series. - for _, l := range lbls.Labels() { + lbls.Labels().Range(func(l labels.Label) { seriesSymbols[l.Name] = struct{}{} seriesSymbols[l.Value] = struct{}{} - } + }) } require.NoError(t, p.Err())