diff --git a/tsdb/block.go b/tsdb/block.go index 8d7badef9e..44c6ef5053 100644 --- a/tsdb/block.go +++ b/tsdb/block.go @@ -189,6 +189,7 @@ type BlockMeta struct { // BlockStats contains stats about contents of a block. type BlockStats struct { NumSamples uint64 `json:"numSamples,omitempty"` + NumFloatSamples uint64 `json:"numFloatSamples,omitempty"` NumHistogramSamples uint64 `json:"numHistogramSamples,omitempty"` NumSeries uint64 `json:"numSeries,omitempty"` NumChunks uint64 `json:"numChunks,omitempty"` diff --git a/tsdb/compact.go b/tsdb/compact.go index c3d3770bff..517c42ff02 100644 --- a/tsdb/compact.go +++ b/tsdb/compact.go @@ -895,10 +895,13 @@ func (c DefaultBlockPopulator) PopulateBlock(ctx context.Context, metrics *Compa meta.Stats.NumChunks += uint64(len(chks)) meta.Stats.NumSeries++ for _, chk := range chks { - meta.Stats.NumSamples += uint64(chk.Chunk.NumSamples()) - enc := chk.Chunk.Encoding() - if enc == chunkenc.EncHistogram || enc == chunkenc.EncFloatHistogram { - meta.Stats.NumHistogramSamples += uint64(chk.Chunk.NumSamples()) + samples := uint64(chk.Chunk.NumSamples()) + meta.Stats.NumSamples += samples + switch chk.Chunk.Encoding() { + case chunkenc.EncHistogram, chunkenc.EncFloatHistogram: + meta.Stats.NumHistogramSamples += samples + case chunkenc.EncXOR: + meta.Stats.NumFloatSamples += samples } } diff --git a/tsdb/compact_test.go b/tsdb/compact_test.go index 4f376c2c1a..1ee08e3efb 100644 --- a/tsdb/compact_test.go +++ b/tsdb/compact_test.go @@ -1101,6 +1101,8 @@ func TestCompaction_populateBlock(t *testing.T) { for _, smpl := range chk { if smpl.h != nil || smpl.fh != nil { s.NumHistogramSamples++ + } else { + s.NumFloatSamples++ } } }