github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/querier/queryrange/queryrangebase/step_align.go (about) 1 package queryrangebase 2 3 import ( 4 "context" 5 ) 6 7 // StepAlignMiddleware aligns the start and end of request to the step to 8 // improved the cacheability of the query results. 9 var StepAlignMiddleware = MiddlewareFunc(func(next Handler) Handler { 10 return stepAlign{ 11 next: next, 12 } 13 }) 14 15 type stepAlign struct { 16 next Handler 17 } 18 19 func (s stepAlign) Do(ctx context.Context, r Request) (Response, error) { 20 start := (r.GetStart() / r.GetStep()) * r.GetStep() 21 end := (r.GetEnd() / r.GetStep()) * r.GetStep() 22 return s.next.Do(ctx, r.WithStartEnd(start, end)) 23 }