diff --git a/chunks/chunk.go b/chunks/chunk.go index 86f456be8..4eeb9c5d7 100644 --- a/chunks/chunk.go +++ b/chunks/chunk.go @@ -43,6 +43,7 @@ type Chunk interface { Encoding() Encoding Appender() (Appender, error) Iterator() Iterator + NumSamples() int } // FromData returns a chunk from a byte slice of chunk data. diff --git a/chunks/xor.go b/chunks/xor.go index a72e9ef0c..e9bdef074 100644 --- a/chunks/xor.go +++ b/chunks/xor.go @@ -72,6 +72,11 @@ func (c *XORChunk) Bytes() []byte { return c.b.bytes() } +// NumSamples returns the number of samples in the chunk. +func (c *XORChunk) NumSamples() int { + return int(binary.BigEndian.Uint16(c.Bytes())) +} + // Appender implements the Chunk interface. func (c *XORChunk) Appender() (Appender, error) { it := c.iterator() diff --git a/compact.go b/compact.go index 43afa45fa..1036cf403 100644 --- a/compact.go +++ b/compact.go @@ -14,7 +14,6 @@ package tsdb import ( - "encoding/binary" "fmt" "math/rand" "os" @@ -461,7 +460,7 @@ func populateBlock(blocks []Block, indexw IndexWriter, chunkw ChunkWriter) (*Blo meta.Stats.NumChunks += uint64(len(chks)) meta.Stats.NumSeries++ for _, chk := range chks { - meta.Stats.NumSamples += uint64(binary.BigEndian.Uint16(chk.Chunk.Bytes())) + meta.Stats.NumSamples += uint64(chk.Chunk.NumSamples()) } for _, l := range lset {