diff --git a/storage/local/series.go b/storage/local/series.go index 05f0633d5..4acc40884 100644 --- a/storage/local/series.go +++ b/storage/local/series.go @@ -14,6 +14,7 @@ package local import ( + "fmt" "sort" "sync" "time" @@ -496,6 +497,10 @@ func (s *memorySeries) preloadChunksForRange( if throughIdx == len(s.chunkDescs) { throughIdx-- } + if fromIdx > throughIdx { + // Guard against nonsensical result. The caller will quarantine the series with a meaningful log entry. + return nopIter, fmt.Errorf("fromIdx=%d is greater than throughIdx=%d, likely caused by data corruption", fromIdx, throughIdx) + } pinIndexes := make([]int, 0, throughIdx-fromIdx+1) for i := fromIdx; i <= throughIdx; i++ {