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/logql/limits.go

81 lines
2.0 KiB

package logql
import (
"context"
"math"
"time"
"github.com/grafana/loki/v3/pkg/util/validation"
)
var NoLimits = &fakeLimits{
maxSeries: math.MaxInt32,
timeout: time.Hour,
multiVariantQueryEnable: false, // Multi-variant queries disabled by default
maxScanTaskParallelism: 0,
}
// Limits allow the engine to fetch limits for a given users.
type Limits interface {
MaxQuerySeries(context.Context, string) int
MaxQueryRange(ctx context.Context, userID string) time.Duration
QueryTimeout(context.Context, string) time.Duration
BlockedQueries(context.Context, string) []*validation.BlockedQuery
EnableMultiVariantQueries(string) bool
// v2 engine limits
MaxScanTaskParallelism(string) int
DebugEngineTasks(string) bool
DebugEngineStreams(string) bool
}
type fakeLimits struct {
maxSeries int
timeout time.Duration
blockedQueries []*validation.BlockedQuery
rangeLimit time.Duration
requiredLabels []string
multiVariantQueryEnable bool
// v2 engine limits
maxScanTaskParallelism int
debugEngineTasks bool
debugEngineStreams bool
}
func (f fakeLimits) MaxQuerySeries(_ context.Context, _ string) int {
return f.maxSeries
}
func (f fakeLimits) MaxQueryRange(_ context.Context, _ string) time.Duration {
return f.rangeLimit
}
func (f fakeLimits) QueryTimeout(_ context.Context, _ string) time.Duration {
return f.timeout
}
func (f fakeLimits) BlockedQueries(_ context.Context, _ string) []*validation.BlockedQuery {
return f.blockedQueries
}
func (f fakeLimits) RequiredLabels(_ context.Context, _ string) []string {
return f.requiredLabels
}
func (f fakeLimits) EnableMultiVariantQueries(_ string) bool {
return f.multiVariantQueryEnable
}
func (f fakeLimits) MaxScanTaskParallelism(_ string) int {
return f.maxScanTaskParallelism
}
func (f fakeLimits) DebugEngineTasks(_ string) bool {
return f.debugEngineTasks
}
func (f fakeLimits) DebugEngineStreams(_ string) bool {
return f.debugEngineStreams
}