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"
"path/filepath" "path/filepath"
"sync" "sync"
"sync/atomic"
"time" "time"
"github.com/golang/glog" "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 // this method during start-up while nothing else is running in storage
// land. This method is utterly goroutine-unsafe. // land. This method is utterly goroutine-unsafe.
func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) { func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
var chunksTotal, chunkDescsTotal int64 var chunkDescsTotal int64
fingerprintToSeries := make(map[clientmodel.Fingerprint]*memorySeries) fingerprintToSeries := make(map[clientmodel.Fingerprint]*memorySeries)
sm = &seriesMap{m: fingerprintToSeries} sm = &seriesMap{m: fingerprintToSeries}
@ -599,7 +598,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
} }
} }
if err == nil { if err == nil {
atomic.AddInt64(&numMemChunks, chunksTotal)
numMemChunkDescs.Add(float64(chunkDescsTotal)) numMemChunkDescs.Add(float64(chunkDescsTotal))
} }
}() }()
@ -704,7 +702,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
} }
} else { } else {
// Non-persisted head chunk. // Non-persisted head chunk.
chunksTotal++
chunkType, err := r.ReadByte() chunkType, err := r.ReadByte()
if err != nil { if err != nil {
glog.Warning("Could not decode chunk type:", err) glog.Warning("Could not decode chunk type:", err)
@ -718,6 +715,7 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
return sm, nil return sm, nil
} }
chunkDescs[i] = newChunkDesc(chunk) 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.ingestedSamplesCount
ch <- s.invalidPreloadRequestsCount ch <- s.invalidPreloadRequestsCount
count := atomic.LoadInt64(&numMemChunks) ch <- prometheus.MustNewConstMetric(
ch <- prometheus.MustNewConstMetric(numMemChunksDesc, prometheus.GaugeValue, float64(count)) numMemChunksDesc,
prometheus.GaugeValue,
float64(atomic.LoadInt64(&numMemChunks)))
} }
// chunkMaps is a slice of maps with chunkDescs to be persisted. // chunkMaps is a slice of maps with chunkDescs to be persisted.

Loading…
Cancel
Save