diff --git a/storage/merge.go b/storage/merge.go index 61f873cf36..e1c248cb46 100644 --- a/storage/merge.go +++ b/storage/merge.go @@ -693,7 +693,7 @@ func estimateCompactedChunkCount(series []ChunkSeries) int { for _, s := range series { iter := s.Iterator(nil) if iter.Next() { - h.Push(iter) + heap.Push(&h, iter) } } diff --git a/storage/merge_test.go b/storage/merge_test.go index 98daed10c5..e5eb296d1b 100644 --- a/storage/merge_test.go +++ b/storage/merge_test.go @@ -429,6 +429,14 @@ func TestCompactingChunkSeriesMerger(t *testing.T) { }, expected: NewListChunkSeriesFromSamples(labels.FromStrings("bar", "baz"), []tsdbutil.Sample{fSample{1, 1}, fSample{2, 2}}, []tsdbutil.Sample{fSample{3, 3}, fSample{5, 5}}, []tsdbutil.Sample{fSample{7, 7}, fSample{9, 9}}, []tsdbutil.Sample{fSample{10, 10}}), }, + { + name: "two non overlapping in reverse order", + input: []ChunkSeries{ + NewListChunkSeriesFromSamples(labels.FromStrings("bar", "baz"), []tsdbutil.Sample{fSample{7, 7}, fSample{9, 9}}, []tsdbutil.Sample{fSample{10, 10}}), + NewListChunkSeriesFromSamples(labels.FromStrings("bar", "baz"), []tsdbutil.Sample{fSample{1, 1}, fSample{2, 2}}, []tsdbutil.Sample{fSample{3, 3}, fSample{5, 5}}), + }, + expected: NewListChunkSeriesFromSamples(labels.FromStrings("bar", "baz"), []tsdbutil.Sample{fSample{1, 1}, fSample{2, 2}}, []tsdbutil.Sample{fSample{3, 3}, fSample{5, 5}}, []tsdbutil.Sample{fSample{7, 7}, fSample{9, 9}}, []tsdbutil.Sample{fSample{10, 10}}), + }, { name: "two overlapping", input: []ChunkSeries{