Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/querier/queryrange/queryrangebase/step_align.go

24 lines
616 B

package queryrangebase
import (
"context"
"time"
)
// StepAlignMiddleware aligns the start and end of request to the step to
// improved the cacheability of the query results.
var StepAlignMiddleware = MiddlewareFunc(func(next Handler) Handler {
return stepAlign{
next: next,
}
})
type stepAlign struct {
next Handler
}
func (s stepAlign) Do(ctx context.Context, r Request) (Response, error) {
start := (r.GetStart().UnixMilli() / r.GetStep()) * r.GetStep()
end := (r.GetEnd().UnixMilli() / r.GetStep()) * r.GetStep()
return s.next.Do(ctx, r.WithStartEnd(time.UnixMilli(start), time.UnixMilli(end)))
}