From a1a97ed064dbdbae1ebdc42527e4bb455cb9c2e3 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Mon, 21 Oct 2013 14:30:22 +0200 Subject: [PATCH] Fix chunk corruption compaction bug. This fixes part 1) of https://github.com/prometheus/prometheus/issues/367 (the storing of samples with the wrong fingerprint into a compacted chunk, thus corrupting it). Change-Id: I4c36d0d2e508e37a0aba90b8ca2ecc78ee03e3f1 --- storage/metric/processor.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/storage/metric/processor.go b/storage/metric/processor.go index b1abc606bfb..7e289be1187 100644 --- a/storage/metric/processor.go +++ b/storage/metric/processor.go @@ -135,6 +135,9 @@ func (p *CompactionProcessor) Apply(sampleIterator leveldb.Iterator, samplesPers return } sampleKey.Load(sampleKeyDto) + if !sampleKey.Fingerprint.Equal(fingerprint) { + break + } unactedSamples, err = extractSampleValues(sampleIterator) if err != nil {