lib/storage: mention tag filters used in the query that led to error message

This should improve detecting invalid or heavy queries that lead to errors.
This commit is contained in:
Aliaksandr Valialkin 2020-08-10 13:36:00 +03:00
parent f3d33e23c9
commit 582c74cd93
2 changed files with 8 additions and 3 deletions

View file

@ -65,6 +65,9 @@ type Search struct {
ts tableSearch
// tfss contains tag filters used in the search.
tfss []*TagFilters
// deadline in unix timestamp seconds for the current search.
deadline uint64
@ -81,6 +84,7 @@ func (s *Search) reset() {
s.storage = nil
s.ts.reset()
s.tfss = nil
s.deadline = 0
s.err = nil
s.needClosing = false
@ -98,6 +102,7 @@ func (s *Search) Init(storage *Storage, tfss []*TagFilters, tr TimeRange, maxMet
}
s.reset()
s.tfss = tfss
s.deadline = deadline
s.needClosing = true
@ -130,10 +135,10 @@ func (s *Search) MustClose() {
// Error returns the last error from s.
func (s *Search) Error() error {
if s.err == io.EOF {
if s.err == io.EOF || s.err == nil {
return nil
}
return s.err
return fmt.Errorf("error when searching for tagFilters=%s: %w", s.tfss, s.err)
}
// NextMetricBlock proceeds to the next MetricBlockRef.

View file

@ -821,7 +821,7 @@ func (s *Storage) searchTSIDs(tfss []*TagFilters, tr TimeRange, maxMetrics int,
tsids, err := s.idb().searchTSIDs(tfss, tr, maxMetrics, deadline)
<-searchTSIDsConcurrencyCh
if err != nil {
return nil, fmt.Errorf("error when searching tsids for tfss %q: %w", tfss, err)
return nil, fmt.Errorf("error when searching tsids: %w", err)
}
return tsids, nil
}