Do not double-count non-persisted head chunks on loading.

pull/563/head
beorn7 10 years ago
parent dbc22b972c
commit 9406afad72

@ -22,7 +22,6 @@ import (
"path"
"path/filepath"
"sync"
"sync/atomic"
"time"
"github.com/golang/glog"
@ -586,7 +585,7 @@ func (p *persistence) checkpointSeriesMapAndHeads(fingerprintToSeries *seriesMap
// this method during start-up while nothing else is running in storage
// land. This method is utterly goroutine-unsafe.
func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
var chunksTotal, chunkDescsTotal int64
var chunkDescsTotal int64
fingerprintToSeries := make(map[clientmodel.Fingerprint]*memorySeries)
sm = &seriesMap{m: fingerprintToSeries}
@ -599,7 +598,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
}
}
if err == nil {
atomic.AddInt64(&numMemChunks, chunksTotal)
numMemChunkDescs.Add(float64(chunkDescsTotal))
}
}()
@ -704,7 +702,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
}
} else {
// Non-persisted head chunk.
chunksTotal++
chunkType, err := r.ReadByte()
if err != nil {
glog.Warning("Could not decode chunk type:", err)
@ -718,6 +715,7 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
return sm, nil
}
chunkDescs[i] = newChunkDesc(chunk)
chunkDescsTotal-- // Avoid double-counting by newChunkDesc.
}
}

@ -1027,8 +1027,10 @@ func (s *memorySeriesStorage) Collect(ch chan<- prometheus.Metric) {
ch <- s.ingestedSamplesCount
ch <- s.invalidPreloadRequestsCount
count := atomic.LoadInt64(&numMemChunks)
ch <- prometheus.MustNewConstMetric(numMemChunksDesc, prometheus.GaugeValue, float64(count))
ch <- prometheus.MustNewConstMetric(
numMemChunksDesc,
prometheus.GaugeValue,
float64(atomic.LoadInt64(&numMemChunks)))
}
// chunkMaps is a slice of maps with chunkDescs to be persisted.

Loading…
Cancel
Save