Documentation
¶
Overview ¶
Package limits contains paths to enforce read query limits.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsQueryLimitExceededError ¶ added in v1.0.1
IsQueryLimitExceededError returns true if the error is a query limits exceeded error.
func NewQueryLimitExceededError ¶ added in v1.0.1
NewQueryLimitExceededError creates a query limit exceeded error.
Types ¶
type Key ¶ added in v1.0.1
type Key string
Key is a specific string type for context setting.
const SourceContextKey Key = "source"
SourceContextKey is the key for setting and retrieving source from context.
type LookbackLimit ¶
type LookbackLimit interface {
// Options returns the current limit options.
Options() LookbackLimitOptions
// Inc increments the recent value for the limit.
Inc(new int, source []byte) error
// Update changes the lookback limit settings.
Update(opts LookbackLimitOptions) error
// Start begins background resetting of the lookback limit.
Start()
// Stop end background resetting of the lookback limit.
Stop()
}
LookbackLimit provides an interface for a specific query limit.
func NewLookbackLimit ¶ added in v1.2.0
func NewLookbackLimit( name string, opts LookbackLimitOptions, instrumentOpts instrument.Options, sourceLoggerBuilder SourceLoggerBuilder, ) LookbackLimit
NewLookbackLimit returns a new lookback limit.
type LookbackLimitOptions ¶
type LookbackLimitOptions struct {
// Limit past which errors will be returned.
// Zero disables the limit.
Limit int64
// Lookback is the period over which the limit is enforced.
Lookback time.Duration
// ForceExceeded, if true, makes all calls to the limit behave as though the limit is exceeded.
ForceExceeded bool
// ForceWaited, if true, makes all calls to the limit behave as though the caller waited for permits.
ForceWaited bool
}
LookbackLimitOptions holds options for a lookback limit to be enforced.
func DefaultLookbackLimitOptions ¶
func DefaultLookbackLimitOptions() LookbackLimitOptions
DefaultLookbackLimitOptions returns a new query limits manager.
func (LookbackLimitOptions) Equals ¶ added in v1.0.1
func (opts LookbackLimitOptions) Equals(other LookbackLimitOptions) bool
Equals returns true if the other options match the current.
type Options ¶ added in v1.0.1
type Options interface {
// Validate validates the options.
Validate() error
// SetInstrumentOptions sets the instrument options.
SetInstrumentOptions(value instrument.Options) Options
// InstrumentOptions returns the instrument options.
InstrumentOptions() instrument.Options
// SetDocsLimitOpts sets the doc limit options.
SetDocsLimitOpts(value LookbackLimitOptions) Options
// DocsLimitOpts returns the doc limit options.
DocsLimitOpts() LookbackLimitOptions
// SetBytesReadLimitOpts sets the byte read limit options.
SetBytesReadLimitOpts(value LookbackLimitOptions) Options
// BytesReadLimitOpts returns the byte read limit options.
BytesReadLimitOpts() LookbackLimitOptions
// SetAggregateDocsLimitOpts sets the aggregate doc limit options.
SetAggregateDocsLimitOpts(LookbackLimitOptions) Options
// AggregateDocsLimitOpts returns the aggregate doc limit options.
AggregateDocsLimitOpts() LookbackLimitOptions
// SetDiskSeriesReadLimitOpts sets the disk series read limit options.
SetDiskSeriesReadLimitOpts(value LookbackLimitOptions) Options
// DiskSeriesReadLimitOpts returns the disk series read limit options.
DiskSeriesReadLimitOpts() LookbackLimitOptions
// SetSourceLoggerBuilder sets the source logger.
SetSourceLoggerBuilder(value SourceLoggerBuilder) Options
// SourceLogger sets the source logger.
SourceLoggerBuilder() SourceLoggerBuilder
}
Options is a set of limit options.
func DefaultLimitsOptions ¶ added in v1.2.0
func DefaultLimitsOptions(iOpts instrument.Options) Options
DefaultLimitsOptions is the set of default limits options.
func NewOptions ¶ added in v1.0.1
func NewOptions() Options
NewOptions creates limit options with default values.
type QueryLimits ¶
type QueryLimits interface {
// FetchDocsLimit limits queries by a global concurrent count of index docs matched.
FetchDocsLimit() LookbackLimit
// BytesReadLimit limits queries by a global concurrent count of bytes read from disk.
BytesReadLimit() LookbackLimit
// AnyFetchExceeded returns an error if any of the query limits are exceeded on
// a fetch query.
AnyFetchExceeded() error
// AggregateDocsLimit limits aggregate queries by a global
// concurrent count of index docs matched.
AggregateDocsLimit() LookbackLimit
// Start begins background resetting of the query limits.
Start()
// Stop end background resetting of the query limits.
Stop()
}
QueryLimits provides an interface for managing query limits.
func NewQueryLimits ¶
func NewQueryLimits(options Options) (QueryLimits, error)
NewQueryLimits returns a new query limits manager.
func NoOpQueryLimits ¶
func NoOpQueryLimits() QueryLimits
NoOpQueryLimits returns inactive query limits.
type SourceLogger ¶ added in v1.0.1
type SourceLogger interface {
// LogSourceValue attributes values that exceed a given size to the source.
LogSourceValue(val int64, source []byte)
}
SourceLogger attributes limit values to a source.
type SourceLoggerBuilder ¶ added in v1.0.1
type SourceLoggerBuilder interface {
// NewSourceLogger builds a source logger.
NewSourceLogger(name string, opts instrument.Options) SourceLogger
}
SourceLoggerBuilder builds a SourceLogger given instrument options.