{"record":{"id":"579f5a501448f3c9","repo":"thanos-io/thanos","slug":"a-non-zero-value-is-required-for-querier-query-ing","errorCode":null,"errorMessage":"a non-zero value is required for querier.query-ingesters-within when -querier.parallelise-shardable-queries is enabled","messagePattern":"a non-zero value is required for querier\\.query-ingesters-within when -querier\\.parallelise-shardable-queries is enabled","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/cortex/querier/queryrange/roundtrip.go","lineNumber":53,"sourceCode":"\t\"github.com/weaveworks/common/httpgrpc\"\n\t\"github.com/weaveworks/common/user\"\n\n\t\"github.com/thanos-io/thanos/internal/cortex/chunk/cache\"\n\t\"github.com/thanos-io/thanos/internal/cortex/querier\"\n\t\"github.com/thanos-io/thanos/internal/cortex/tenant\"\n\t\"github.com/thanos-io/thanos/internal/cortex/util\"\n\t\"github.com/thanos-io/thanos/internal/cortex/util/flagext\"\n)\n\nconst day = 24 * time.Hour\n\nvar (\n\t// PassthroughMiddleware is a noop middleware\n\tPassthroughMiddleware = MiddlewareFunc(func(next Handler) Handler {\n\t\treturn next\n\t})\n\n\terrInvalidMinShardingLookback = errors.New(\"a non-zero value is required for querier.query-ingesters-within when -querier.parallelise-shardable-queries is enabled\")\n)\n\n// Config for query_range middleware chain.\ntype Config struct {\n\tSplitQueriesByInterval time.Duration `yaml:\"split_queries_by_interval\"`\n\tAlignQueriesWithStep   bool          `yaml:\"align_queries_with_step\"`\n\tResultsCacheConfig     `yaml:\"results_cache\"`\n\tCacheResults           bool `yaml:\"cache_results\"`\n\tMaxRetries             int  `yaml:\"max_retries\"`\n\tShardedQueries         bool `yaml:\"parallelise_shardable_queries\"`\n\t// List of headers which query_range middleware chain would forward to downstream querier.\n\tForwardHeaders flagext.StringSlice `yaml:\"forward_headers_list\"`\n}\n\n// Validate validates the config.\nfunc (cfg *Config) Validate(qCfg querier.Config) error {\n\tif cfg.CacheResults {\n\t\tif cfg.SplitQueriesByInterval <= 0 {","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/internal/cortex/querier/queryrange/roundtrip.go#L35-L71","documentation":"errInvalidMinShardingLookback is the declared error value used when query sharding (-querier.parallelise-shardable-queries) is enabled without a non-zero querier.query-ingesters-within. Sharding needs a bounded ingester lookback to split queries safely.","triggerScenarios":"Config validation (Validate of the queryrange/querier config chain) with `parallelise_shardable_queries: true` and `query_ingesters_within: 0`, typically at Cortex startup.","commonSituations":"Operators enabling parallel sharding for performance without setting the ingesters-within window; configs migrated from single-binary setups where query_ingesters_within was never set.","solutions":["Set -querier.query-ingesters-within to a non-zero duration (e.g. 13h, larger than your ingester ring's replication)","Or disable -querier.parallelise-shardable-queries","Keep query_ingesters_within aligned with ingester query-ingesters-within settings"],"exampleFix":"# before\nquerier:\n  parallelise-shardable-queries: true\n# after\nquerier:\n  parallelise-shardable-queries: true\n  query-ingesters-within: 13h","handlingStrategy":"validation","validationCode":"if cfg.ParalleliseShardableQueries && cfg.QueryIngestersWithin <= 0 {\n\treturn errors.New(\"set querier.query-ingesters-within before enabling parallelise-shardable-queries\")\n}","typeGuard":null,"tryCatchPattern":"if err := cfg.Validate(qCfg); err != nil {\n\tif strings.Contains(err.Error(), \"query-ingesters-within\") {\n\t\tcfg.QueryIngestersWithin = model.Duration(13 * time.Hour)\n\t}\n}","preventionTips":["Always pair parallelise-shardable-queries with a positive query-ingesters-within","Keep it larger than your ingester ring's expected write window","Run config validation in CI pipelines"],"tags":["config","validation","sharding","cortex"],"backgroundTag":"missing-required-config","analyzedSha":"35b8b991177def87ed52dcf10f9b6d87f07282c8","analyzedAt":"2026-09-07T01:49:59.689Z","contentChangedAt":"2026-09-07T01:49:59.689Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}