NewQueryLimiter makes a new per-query limiter. Each query limiter is configured using the `maxSeriesPerQuery` limit.
(maxSeriesPerQuery, maxChunkBytesPerQuery, maxChunksPerQuery, maxDataBytesPerQuery int)
| 39 | // NewQueryLimiter makes a new per-query limiter. Each query limiter |
| 40 | // is configured using the `maxSeriesPerQuery` limit. |
| 41 | func NewQueryLimiter(maxSeriesPerQuery, maxChunkBytesPerQuery, maxChunksPerQuery, maxDataBytesPerQuery int) *QueryLimiter { |
| 42 | return &QueryLimiter{ |
| 43 | uniqueSeriesMx: sync.Mutex{}, |
| 44 | uniqueSeries: map[model.Fingerprint]struct{}{}, |
| 45 | |
| 46 | maxSeriesPerQuery: maxSeriesPerQuery, |
| 47 | maxChunkBytesPerQuery: maxChunkBytesPerQuery, |
| 48 | maxChunksPerQuery: maxChunksPerQuery, |
| 49 | maxDataBytesPerQuery: maxDataBytesPerQuery, |
| 50 | } |
| 51 | } |
| 52 | |
| 53 | func AddQueryLimiterToContext(ctx context.Context, limiter *QueryLimiter) context.Context { |
| 54 | return context.WithValue(ctx, ctxKey, limiter) |
no outgoing calls