From 5aa3d8260a7335a0da6946dea82f608cafa46c20 Mon Sep 17 00:00:00 2001 From: George Krajcsovits Date: Thu, 12 Sep 2024 00:55:39 +0200 Subject: [PATCH] TSDB: OOO native histograms: prep for multiple ooo head chunks (#14850) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * tsdb: mmapCurrentOOOHeadChunk prepare for multiple ooo chunks Currently float samples can only create a single ooo head chunk, but native histograms can result in multiple due to counter resets, etc. Signed-off-by: György Krajcsovits * tsdb: getOOOSeriesChunks prepare for multiple ooo chunks Currently float samples can only create a single ooo head chunk, but native histograms can result in multiple due to counter resets, etc. Signed-off-by: György Krajcsovits --------- Signed-off-by: György Krajcsovits --- tsdb/head_append.go | 4 ++-- tsdb/ooo_head_read.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tsdb/head_append.go b/tsdb/head_append.go index 988ce9397..ea2ee0091 100644 --- a/tsdb/head_append.go +++ b/tsdb/head_append.go @@ -1469,13 +1469,13 @@ func (s *memSeries) mmapCurrentOOOHeadChunk(chunkDiskMapper *chunks.ChunkDiskMap handleChunkWriteError(err) return nil } - chunkRefs := make([]chunks.ChunkDiskMapperRef, 0, 1) + chunkRefs := make([]chunks.ChunkDiskMapperRef, 0, len(chks)) for _, memchunk := range chks { if len(s.ooo.oooMmappedChunks) >= (oooChunkIDMask - 1) { level.Error(logger).Log("msg", "Too many OOO chunks, dropping data", "series", s.lset.String()) break } - chunkRef := chunkDiskMapper.WriteChunk(s.ref, s.ooo.oooHeadChunk.minTime, s.ooo.oooHeadChunk.maxTime, memchunk.chunk, true, handleChunkWriteError) + chunkRef := chunkDiskMapper.WriteChunk(s.ref, memchunk.minTime, memchunk.maxTime, memchunk.chunk, true, handleChunkWriteError) chunkRefs = append(chunkRefs, chunkRef) s.ooo.oooMmappedChunks = append(s.ooo.oooMmappedChunks, &mmappedChunk{ ref: chunkRef, diff --git a/tsdb/ooo_head_read.go b/tsdb/ooo_head_read.go index 66ae93325..746d38a65 100644 --- a/tsdb/ooo_head_read.go +++ b/tsdb/ooo_head_read.go @@ -111,7 +111,7 @@ func getOOOSeriesChunks(s *memSeries, mint, maxt int64, lastGarbageCollectedMmap return nil } for _, chk := range chks { - addChunk(c.minTime, c.maxTime, ref, chk.chunk) + addChunk(chk.minTime, chk.maxTime, ref, chk.chunk) } } else { var emptyChunk chunkenc.Chunk