storage: Added checks for invariants

This commit is contained in:
beorn7 2017-02-04 23:40:22 +01:00
parent 31e9db7f0c
commit 75282b27ba
2 changed files with 6 additions and 0 deletions

View File

@ -706,6 +706,9 @@ func (p *persistence) checkpointSeriesMapAndHeads(fingerprintToSeries *seriesMap
} }
} }
// chunkDescsOffset. // chunkDescsOffset.
if m.series.chunkDescsOffset < 0 && m.series.persistWatermark > 0 {
panic("encountered unknown chunk desc offset in combination with positive persist watermark")
}
if _, err = codable.EncodeVarint(w, int64(m.series.chunkDescsOffset+m.series.persistWatermark)); err != nil { if _, err = codable.EncodeVarint(w, int64(m.series.chunkDescsOffset+m.series.persistWatermark)); err != nil {
return return
} }

View File

@ -283,6 +283,9 @@ func (s *memorySeries) evictChunkDescs(lenToEvict int) {
if lenToEvict < 1 { if lenToEvict < 1 {
return return
} }
if s.chunkDescsOffset < 0 {
panic("chunk desc eviction requested with unknown chunk desc offset")
}
lenToKeep := len(s.chunkDescs) - lenToEvict lenToKeep := len(s.chunkDescs) - lenToEvict
s.savedFirstTime = s.firstTime() s.savedFirstTime = s.firstTime()
s.chunkDescsOffset += lenToEvict s.chunkDescsOffset += lenToEvict