@@ -279,15 +279,15 @@ type blocksStoreQuerier struct {
279279
280280// Select implements storage.Querier interface.
281281// The bool passed is ignored because the series is always sorted.
282- func (q * blocksStoreQuerier ) Select (_ bool , sp * storage.SelectHints , matchers ... * labels.Matcher ) ( storage.SeriesSet , storage. Warnings , error ) {
283- set , warnings , err := q .selectSorted (sp , matchers ... )
282+ func (q * blocksStoreQuerier ) Select (_ bool , sp * storage.SelectHints , matchers ... * labels.Matcher ) storage.SeriesSet {
283+ set := q .selectSorted (sp , matchers ... )
284284
285285 // We need to wrap the error in order to have Prometheus returning a 5xx error.
286- if err != nil && ! errors .Is (err , context .Canceled ) && ! errors .Is (err , context .DeadlineExceeded ) {
287- err = promql.ErrStorage {Err : err }
286+ if err := set . Err (); err != nil && ! errors .Is (err , context .Canceled ) && ! errors .Is (err , context .DeadlineExceeded ) {
287+ set = storage . ErrSeriesSet ( promql.ErrStorage {Err : err })
288288 }
289289
290- return set , warnings , err
290+ return set
291291}
292292
293293func (q * blocksStoreQuerier ) LabelValues (name string ) ([]string , storage.Warnings , error ) {
@@ -304,7 +304,7 @@ func (q *blocksStoreQuerier) Close() error {
304304 return nil
305305}
306306
307- func (q * blocksStoreQuerier ) selectSorted (sp * storage.SelectHints , matchers ... * labels.Matcher ) ( storage.SeriesSet , storage. Warnings , error ) {
307+ func (q * blocksStoreQuerier ) selectSorted (sp * storage.SelectHints , matchers ... * labels.Matcher ) storage.SeriesSet {
308308 spanLog , spanCtx := spanlogger .New (q .ctx , "blocksStoreQuerier.selectSorted" )
309309 defer spanLog .Span .Finish ()
310310
@@ -329,20 +329,20 @@ func (q *blocksStoreQuerier) selectSorted(sp *storage.SelectHints, matchers ...*
329329 if maxT < minT {
330330 q .metrics .storesHit .Observe (0 )
331331 level .Debug (spanLog ).Log ("msg" , "empty query time range after max time manipulation" )
332- return series . NewEmptySeriesSet (), nil , nil
332+ return storage . EmptySeriesSet ()
333333 }
334334 }
335335
336336 // Find the list of blocks we need to query given the time range.
337337 knownMetas , knownDeletionMarks , err := q .finder .GetBlocks (q .userID , minT , maxT )
338338 if err != nil {
339- return nil , nil , err
339+ return storage . ErrSeriesSet ( err )
340340 }
341341
342342 if len (knownMetas ) == 0 {
343343 q .metrics .storesHit .Observe (0 )
344344 level .Debug (spanLog ).Log ("msg" , "no blocks found" )
345- return series . NewEmptySeriesSet (), nil , nil
345+ return storage . EmptySeriesSet ()
346346 }
347347
348348 level .Debug (spanLog ).Log ("msg" , "found blocks to query" , "expected" , BlockMetas (knownMetas ).String ())
@@ -371,15 +371,15 @@ func (q *blocksStoreQuerier) selectSorted(sp *storage.SelectHints, matchers ...*
371371 break
372372 }
373373
374- return nil , nil , err
374+ return storage . ErrSeriesSet ( err )
375375 }
376376 level .Debug (spanLog ).Log ("msg" , "found store-gateway instances to query" , "num instances" , len (clients ), "attempt" , attempt )
377377
378378 // Fetch series from stores. If an error occur we do not retry because retries
379379 // are only meant to cover missing blocks.
380380 seriesSets , queriedBlocks , warnings , err := q .fetchSeriesFromStores (spanCtx , clients , minT , maxT , convertedMatchers )
381381 if err != nil {
382- return nil , nil , err
382+ return storage . ErrSeriesSet ( err )
383383 }
384384 level .Debug (spanLog ).Log ("msg" , "received series from all store-gateways" , "queried blocks" , strings .Join (convertULIDsToString (queriedBlocks ), " " ))
385385
@@ -402,7 +402,9 @@ func (q *blocksStoreQuerier) selectSorted(sp *storage.SelectHints, matchers ...*
402402 q .metrics .storesHit .Observe (float64 (len (touchedStores )))
403403 q .metrics .refetches .Observe (float64 (attempt - 1 ))
404404
405- return storage .NewMergeSeriesSet (resSeriesSets , storage .ChainedSeriesMerge ), resWarnings , nil
405+ return series .NewSeriesSetWithWarnings (
406+ storage .NewMergeSeriesSet (resSeriesSets , storage .ChainedSeriesMerge ),
407+ resWarnings )
406408 }
407409
408410 level .Debug (spanLog ).Log ("msg" , "consistency check failed" , "attempt" , attempt , "missing blocks" , strings .Join (convertULIDsToString (missingBlocks ), " " ))
@@ -415,7 +417,7 @@ func (q *blocksStoreQuerier) selectSorted(sp *storage.SelectHints, matchers ...*
415417 err = fmt .Errorf ("consistency check failed because some blocks were not queried: %s" , strings .Join (convertULIDsToString (remainingBlocks ), " " ))
416418 level .Warn (util .WithContext (spanCtx , spanLog )).Log ("msg" , "failed consistency check" , "err" , err )
417419
418- return nil , nil , err
420+ return storage . ErrSeriesSet ( err )
419421}
420422
421423func (q * blocksStoreQuerier ) fetchSeriesFromStores (
0 commit comments