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  }