mirror of
https://github.com/prometheus/prometheus
synced 2025-01-14 10:52:10 +00:00
Fix handling of empty chunkDescs while preloading chunks.
Change-Id: I73ce89fe0ef90c6eda78218e5be2cbfa0207c364
This commit is contained in:
parent
ecee5d8281
commit
427c8d53a5
@ -431,24 +431,23 @@ func (s *memorySeries) preloadChunksAtTime(t clientmodel.Timestamp, p *persisten
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// loadChunkDescs is an internal helper method.
|
|
||||||
func (s *memorySeries) loadChunkDescs(p *persistence) error {
|
|
||||||
cds, err := p.loadChunkDescs(s.metric.Fingerprint(), s.chunkDescs[0].firstTime())
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
s.chunkDescs = append(cds, s.chunkDescs...)
|
|
||||||
s.chunkDescsLoaded = true
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// preloadChunksForRange loads chunks for the given range from the persistence.
|
// preloadChunksForRange loads chunks for the given range from the persistence.
|
||||||
// The caller must have locked the fingerprint of the series.
|
// The caller must have locked the fingerprint of the series.
|
||||||
func (s *memorySeries) preloadChunksForRange(from clientmodel.Timestamp, through clientmodel.Timestamp, p *persistence) (chunkDescs, error) {
|
func (s *memorySeries) preloadChunksForRange(
|
||||||
if !s.chunkDescsLoaded && (len(s.chunkDescs) == 0 || from.Before(s.chunkDescs[0].firstTime())) {
|
from clientmodel.Timestamp, through clientmodel.Timestamp,
|
||||||
if err := s.loadChunkDescs(p); err != nil {
|
fp clientmodel.Fingerprint, p *persistence,
|
||||||
|
) (chunkDescs, error) {
|
||||||
|
firstChunkDescTime := through
|
||||||
|
if len(s.chunkDescs) > 0 {
|
||||||
|
firstChunkDescTime = s.chunkDescs[0].firstTime()
|
||||||
|
}
|
||||||
|
if !s.chunkDescsLoaded && from.Before(firstChunkDescTime) {
|
||||||
|
cds, err := p.loadChunkDescs(fp, firstChunkDescTime)
|
||||||
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
s.chunkDescs = append(cds, s.chunkDescs...)
|
||||||
|
s.chunkDescsLoaded = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(s.chunkDescs) == 0 {
|
if len(s.chunkDescs) == 0 {
|
||||||
|
@ -175,7 +175,7 @@ func (s *memorySeriesStorage) preloadChunksForRange(fp clientmodel.Fingerprint,
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return series.preloadChunksForRange(from, through, s.persistence)
|
return series.preloadChunksForRange(from, through, fp, s.persistence)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewIterator implements storage.
|
// NewIterator implements storage.
|
||||||
|
Loading…
Reference in New Issue
Block a user