in pkg/query/logical/common.go [107:151]
func ExecuteForShard(l *logger.Logger, series tsdb.SeriesList, timeRange timestamp.TimeRange,
builders ...SeekerBuilder,
) ([]tsdb.Iterator, []io.Closer, error) {
var itersInShard []tsdb.Iterator
var closers []io.Closer
for _, seriesFound := range series {
itersInSeries, err := func() ([]tsdb.Iterator, error) {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
sp, errInner := seriesFound.Span(context.WithValue(ctx, logger.ContextKey, l), timeRange)
if errInner != nil {
if errors.Is(errInner, tsdb.ErrEmptySeriesSpan) {
return nil, nil
}
return nil, errInner
}
closers = append(closers, sp)
b := sp.SeekerBuilder()
for _, builder := range builders {
builder(b)
}
seeker, errInner := b.Build()
if errInner != nil {
return nil, errInner
}
iters, errInner := seeker.Seek()
if errInner != nil {
return nil, errInner
}
return iters, nil
}()
if err != nil {
if len(closers) > 0 {
for _, closer := range closers {
err = multierr.Append(err, closer.Close())
}
}
return nil, nil, err
}
if len(itersInSeries) > 0 {
itersInShard = append(itersInShard, itersInSeries...)
}
}
return itersInShard, closers, nil
}