Skip to content

Commit 226ac85

Browse files
authored
Graduate native histogram ingestion and close the v1-guarantees gaps (#7789)
* Graduate native histogram ingestion and close the v1-guarantees gaps -blocks-storage.tsdb.enable-native-histograms shipped as experimental in 1.18.0, so 1.22.0 is four minors and roughly two years of exposure later. docs/guides/native-histograms.md already carries no experimental language, which contradicted v1-guarantees.md. Graduate the ingestion flag; the flag name does not change, so no deprecation shim is needed. This does not touch -blocks-storage.tsdb.out-of-order-cap-max, which has its own bullet. Also record the experimental flags this cycle added without a v1-guarantees entry: - -distributor.num-query-workers (#7623), marked EXPERIMENTAL in its flag help. - The whole Thanos PromQL engine surface. -querier.thanos-engine says "Experimental." in its help but nothing from pkg/engine/config.go was listed. - The whole parquet flag surface; only -parquet-converter.max-num-columns was listed. Grouped by prefix rather than enumerated, since the cache flags are boilerplate. - -querier.query-protection.rejection (#7442) and -querier.query-protection.eviction.max-evictions-per-cycle (#7488). Parquet and the tenant-federation regex matcher are deliberately not graduated: the parquet proposal is still "Status: Proposed", docs/guides/parquet-mode.md still warns it is experimental, and #7610 changed the file format this cycle. The regex matcher has only two minors of exposure and #7562 fixed cross-tenant stale cache reads this cycle. Refs #5922 Signed-off-by: Charlie Le <charlie_le@apple.com> * Drop [EXPERIMENTAL] from -blocks-storage.tsdb.enable-native-histograms help Addresses PR review feedback: the flag is graduated in this PR, so the CLI help text should no longer mark it experimental. Regenerated config docs and JSON schema. Signed-off-by: Charlie Le <charlie_le@apple.com> --------- Signed-off-by: Charlie Le <charlie_le@apple.com>
1 parent 2c0a976 commit 226ac85

5 files changed

Lines changed: 24 additions & 9 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
- `-blocks-storage.tsdb.wal-compression-enabled` (deprecated in 1.19.0; use `-blocks-storage.tsdb.wal-compression-type`)
1414
- `-ingester.max-series-per-query` (a chunks-storage limit, ignored since blocks storage; use `-querier.max-fetched-series-per-query`)
1515
* [CHANGE] Ingester: Formally deprecate `-blocks-storage.tsdb.max-exemplars`, scheduled for removal in v1.24.0. Use the per-tenant `max_exemplars` limit instead. The flag still works as the global fallback when `max_exemplars` is 0, but setting it now logs a warning and increments `deprecated_flags_inuse_total`. #7793
16+
* [CHANGE] Ingester: Graduate native histogram ingestion (`-blocks-storage.tsdb.enable-native-histograms`) from experimental. #7789
1617
* [CHANGE] Querier: Make query time range configurations per-tenant: `query_ingesters_within`, `query_store_after`, and `shuffle_sharding_ingesters_lookback_period`. Uses `model.Duration` instead of `time.Duration` to support serialization but has minimum unit of 1ms (nanoseconds/microseconds not supported). #7160
1718
* [CHANGE] Cache: Setting `-blocks-storage.bucket-store.metadata-cache.bucket-index-content-ttl` to 0 will disable the bucket-index cache. #7446
1819
* [CHANGE] HA Tracker: Move `-distributor.ha-tracker.failover-timeout` from a global config to a per-tenant runtime config. The flag name and default value (30s) remain the same. #7481

‎docs/configuration/config-file-reference.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4623,7 +4623,7 @@ The `limits_config` configures default and per-tenant limits imposed by Cortex s
46234623
# series matching its matchers and exposes the count as a metric.
46244624
[active_series_trackers: <list of ActiveSeriesTrackerConfig> | default = []]
46254625
4626-
# [EXPERIMENTAL] True to enable native histogram.
4626+
# True to enable native histogram.
46274627
# CLI flag: -blocks-storage.tsdb.enable-native-histograms
46284628
[enable_native_histograms: <boolean> | default = false]
46294629

‎docs/configuration/v1-guarantees.md‎

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ Currently experimental features are:
5252
- Do not extend writes on unhealthy ingesters (`-distributor.extend-writes=false`)
5353
- Accept multiple HA pairs in the same request (enabled via `-experimental.distributor.ha-tracker.mixed-ha-samples=true`)
5454
- Accept Prometheus remote write 2.0 request (`-distributor.remote-writev2-enabled=true`)
55+
- Use a goroutine worker pool for query fan-out calls to ingesters (`-distributor.num-query-workers`)
5556
- Tenant Deletion in Purger, for blocks storage.
5657
- Blocks storage user index
5758
- Store Gateway max concurrent fetched data bytes limit
@@ -103,8 +104,6 @@ Currently experimental features are:
103104
- Ingest delta temporality OTLP metrics (`-distributor.otlp.allow-delta-temporality=true`)
104105
- Persistent tokens in the Ruler Ring:
105106
- `-ruler.ring.tokens-file-path` (path) CLI flag
106-
- Native Histograms
107-
- Ingestion can be enabled by setting `-blocks-storage.tsdb.enable-native-histograms=true` on Ingester.
108107
- String interning for metrics labels
109108
- Enable string interning for metrics labels by setting `-ingester.labels-string-interning-enabled` on Ingester.
110109
- Query-frontend: query rejection (`-frontend.query-rejection.enabled`)
@@ -113,9 +112,10 @@ Currently experimental features are:
113112
- Query-frontend: dynamic query splits
114113
- `querier.max-shards-per-query` (int) CLI flag
115114
- `querier.max-fetched-data-duration-per-query` (duration) CLI flag
116-
- Ingester/Store-Gateway: Query rejection
115+
- Ingester/Store-Gateway/Querier: Query rejection
117116
- `-ingester.query-protection.rejection`
118117
- `-store-gateway.query-protection.rejection`
118+
- `-querier.query-protection.rejection`
119119
- Distributor/Ingester: Stream push connection
120120
- Enable stream push connection between distributor and ingester by setting `-distributor.use-stream-push=true` on Distributor.
121121
- Enable stream push authentication on Distributor/Ingester. (`-distributor.sign-write-requests-keys`)
@@ -141,6 +141,7 @@ Currently experimental features are:
141141
- `-querier.query-protection.eviction.cooldown-period` (int)
142142
- `-querier.query-protection.eviction.eviction-metric` (string)
143143
- `-querier.query-protection.eviction.min-query-age` (duration)
144+
- `-querier.query-protection.eviction.max-evictions-per-cycle` (int)
144145
- Ingester: Active Series Tracker
145146
- Per-tenant `active_series_trackers` configuration in runtime config overrides
146147
- Counts active series matching PromQL label matchers and exposes `cortex_ingester_active_series_per_tracker` metric
@@ -154,6 +155,19 @@ Currently experimental features are:
154155
- `-ingester.head-queried-series-metrics-windows` time windows to report (default: 2h)
155156
- `-ingester.head-queried-series-metrics-window-duration` HLL sub-window size
156157
- `-ingester.head-queried-series-metrics-sample-rate` query sampling rate
157-
- Parquet Converter: Maximum number of columns per file
158-
- `-parquet-converter.max-num-columns` (int) CLI flag
159-
- Automatically shards parquet files when the number of columns exceeds the configured limit
158+
- Parquet storage
159+
- Parquet Converter: the `-parquet-converter.*` CLI flags, including `-parquet-converter.enabled`,
160+
`-parquet-converter.max-num-columns` (automatically shards parquet files when the number of columns
161+
exceeds the configured limit) and the `-parquet-converter.ring.*` ring configuration
162+
- Querier: `-querier.parquet-queryable-default-block-store`, `-querier.parquet-queryable-fallback-disabled`,
163+
the `-querier.parquet-queryable.max-fetched-*` limits and `-querier.parquet-shard-cache-*`
164+
- Store Gateway: `-blocks-storage.bucket-store.parquet-query-concurrency`,
165+
`-blocks-storage.bucket-store.parquet-shard-cache-*` and the
166+
`-blocks-storage.bucket-store.parquet-labels-cache.*` /
167+
`-blocks-storage.bucket-store.parquet-row-ranges-cache.*` cache configuration
168+
- Querier/Ruler: Thanos PromQL engine
169+
- `-querier.thanos-engine` / `-ruler.thanos-engine` (boolean) CLI flags
170+
- `-querier.enable-x-functions` / `-ruler.enable-x-functions` (boolean) CLI flags
171+
- `-querier.optimizers` / `-ruler.optimizers` (string) CLI flags
172+
- `-querier.decoding-concurrency` / `-ruler.decoding-concurrency` (int) CLI flags
173+
- `-querier.selector-batch-size` / `-ruler.selector-batch-size` (int) CLI flags

‎pkg/util/validation/limits.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func (l *Limits) RegisterFlags(f *flag.FlagSet) {
313313
f.IntVar(&l.MaxGlobalSeriesPerMetric, "ingester.max-global-series-per-metric", 0, "The maximum number of active series per metric name, across the cluster before replication. 0 to disable.")
314314
f.IntVar(&l.MaxLocalNativeHistogramSeriesPerUser, "ingester.max-native-histogram-series-per-user", 0, "The maximum number of active native histogram series per user, per ingester. 0 to disable. Supported only if ingester.active-series-metrics-enabled is true.")
315315
f.IntVar(&l.MaxGlobalNativeHistogramSeriesPerUser, "ingester.max-global-native-histogram-series-per-user", 0, "The maximum number of active native histogram series per user, across the cluster before replication. 0 to disable. Supported only if -distributor.shard-by-all-labels and ingester.active-series-metrics-enabled is true.")
316-
f.BoolVar(&l.EnableNativeHistograms, "blocks-storage.tsdb.enable-native-histograms", false, "[EXPERIMENTAL] True to enable native histogram.")
316+
f.BoolVar(&l.EnableNativeHistograms, "blocks-storage.tsdb.enable-native-histograms", false, "True to enable native histogram.")
317317
f.IntVar(&l.MaxExemplars, "ingester.max-exemplars", 0, "Enables support for exemplars in TSDB and sets the maximum number that will be stored. less than zero means disabled. If the value is set to zero, cortex will fallback to the deprecated blocks-storage.tsdb.max-exemplars value; that fallback is removed in v1.24.0.")
318318
f.Var(&l.OutOfOrderTimeWindow, "ingester.out-of-order-time-window", "[Experimental] Configures the allowed time window for ingestion of out-of-order samples. Disabled (0s) by default.")
319319

‎schemas/cortex-config-schema.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5670,7 +5670,7 @@
56705670
},
56715671
"enable_native_histograms": {
56725672
"default": false,
5673-
"description": "[EXPERIMENTAL] True to enable native histogram.",
5673+
"description": "True to enable native histogram.",
56745674
"type": "boolean",
56755675
"x-cli-flag": "blocks-storage.tsdb.enable-native-histograms"
56765676
},

0 commit comments

Comments
 (0)