From 6c3b08b6d06287f2b659d5a791a7921e82e17654 Mon Sep 17 00:00:00 2001 From: Edward Welch <edward.welch@grafana.com> Date: Wed, 8 May 2019 10:11:36 -0400 Subject: [PATCH] Close all chunks before flushing. Moved the check for already closed to make sure we honor this check when `immediate` flushing is requested --- pkg/ingester/flush.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/ingester/flush.go b/pkg/ingester/flush.go index 7bdeae54..d056d25d 100644 --- a/pkg/ingester/flush.go +++ b/pkg/ingester/flush.go @@ -196,17 +196,20 @@ func (i *Ingester) collectChunksToFlush(instance *instance, fp model.Fingerprint var result []*chunkDesc for j := range stream.chunks { if immediate || i.shouldFlushChunk(&stream.chunks[j]) { - result = append(result, &stream.chunks[j]) + // Ensure no more writes happen to this chunk. + if !stream.chunks[j].closed { + stream.chunks[j].closed = true + } + // Flush this chunk if it hasn't already been successfully flushed. + if stream.chunks[j].flushed.IsZero() { + result = append(result, &stream.chunks[j]) + } } } return result, stream.labels } func (i *Ingester) shouldFlushChunk(chunk *chunkDesc) bool { - if !chunk.flushed.IsZero() { - return false - } - // Append should close the chunk when the a new one is added. if chunk.closed { return true -- GitLab