Do not double-count non-persisted head chunks on loading.
This commit is contained in:
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…
Reference in New Issue