{"record":{"id":"40d8b75687fb0d2e","repo":"thanos-io/thanos","slug":"querier-cache-results-may-only-be-enabled-in-conju","errorCode":null,"errorMessage":"querier.cache-results may only be enabled in conjunction with querier.split-queries-by-interval. Please set the latter","messagePattern":"querier\\.cache-results may only be enabled in conjunction with querier\\.split-queries-by-interval\\. Please set the latter","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/cortex/querier/queryrange/roundtrip.go","lineNumber":72,"sourceCode":")\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 {\n\t\t\treturn errors.New(\"querier.cache-results may only be enabled in conjunction with querier.split-queries-by-interval. Please set the latter\")\n\t\t}\n\t\tif err := cfg.ResultsCacheConfig.Validate(qCfg); err != nil {\n\t\t\treturn errors.Wrap(err, \"invalid ResultsCache config\")\n\t\t}\n\t}\n\treturn nil\n}\n\n// HandlerFunc is like http.HandlerFunc, but for Handler.\ntype HandlerFunc func(context.Context, Request) (Response, error)\n\n// Do implements Handler.\nfunc (q HandlerFunc) Do(ctx context.Context, req Request) (Response, error) {\n\treturn q(ctx, req)\n}\n\n// Handler is like http.Handle, but specifically for Prometheus query_range calls.\ntype Handler interface {","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/thanos-io/thanos/blob/35b8b991177def87ed52dcf10f9b6d87f07282c8/internal/cortex/querier/queryrange/roundtrip.go#L54-L90","documentation":"Config.Validate of the queryrange middleware chain rejects querier.cache-results=true when split_queries_by_interval is not set. Cached results are only meaningful per split interval, so caching requires query splitting to be configured.","triggerScenarios":"Startup validation with `cache_results: true` and `split_queries_by_interval: 0` (or the flag -querier.split-queries-by-interval unset).","commonSituations":"Enabling the results cache to cut query load but forgetting the split interval; copying partial config snippets from docs.","solutions":["Set -querier.split-queries-by-interval to a positive duration (e.g. 24h)","Or disable -querier.cache-results if splitting is not wanted","Review the full queryrange Config.Validate chain since further nested validation follows"],"exampleFix":"# before\nquerier:\n  cache-results: true\n# after\nquerier:\n  cache-results: true\n  split-queries-by-interval: 24h","handlingStrategy":"validation","validationCode":"if cfg.CacheResults && cfg.SplitQueriesByInterval <= 0 {\n\treturn errors.New(\"cache-results requires split-queries-by-interval > 0\")\n}","typeGuard":null,"tryCatchPattern":"if err := cfg.Validate(qCfg); err != nil {\n\tif strings.Contains(err.Error(), \"split-queries-by-interval\") {\n\t\tcfg.SplitQueriesByInterval = model.Duration(24 * time.Hour)\n\t}\n}","preventionTips":["Enable cache-results and split-queries-by-interval together in templates","Choose an interval matching dashboard time ranges (typically 24h)","Validate configs before deployment"],"tags":["config","validation","cache","cortex"],"backgroundTag":"missing-required-config-field","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"}