Skip to content

Graduate native histogram ingestion and close the v1-guarantees gaps - #7789

Open
CharlieTLe wants to merge 1 commit into
cortexproject:masterfrom
CharlieTLe:release-1.22-pr-c-experimental
Open

Graduate native histogram ingestion and close the v1-guarantees gaps#7789
CharlieTLe wants to merge 1 commit into
cortexproject:masterfrom
CharlieTLe:release-1.22-pr-c-experimental

Conversation

@CharlieTLe

Copy link
Copy Markdown
Member

Groundwork for v1.22.0. Refs #5922.

Graduate native histogram ingestion

-blocks-storage.tsdb.enable-native-histograms shipped as experimental in 1.18.0
(2024-09-03) — four minors and roughly two years of exposure by 1.22.0.
docs/guides/native-histograms.md already contains zero "experimental" language, which
directly contradicted v1-guarantees.md.

The flag name does not change, so there is no deprecation shim. This does not touch
-blocks-storage.tsdb.out-of-order-cap-max, which has its own bullet.

This cycle's native-histogram fixes are consumer-side decode/merge, not storage-format:
#7645 (panic on zero-count float histograms) and #7555 (ordering in split-by-interval
merges) are both fixed and tested; #7636 and #7569 are additive observability.

Experimental flags that never got a v1-guarantees.md entry

  • -distributor.num-query-workers (feat(distributor): add goroutine worker pool for query fan-out to ing… #7623) — marked EXPERIMENTAL: in its flag help.
  • The entire Thanos PromQL engine block. -querier.thanos-engine says "Experimental."
    in its help, yet nothing from pkg/engine/config.go was listed. Added as one grouped
    bullet covering -querier/-ruler .thanos-engine, .enable-x-functions,
    .optimizers, .decoding-concurrency, .selector-batch-size.
  • The entire parquet flag surface. Only -parquet-converter.max-num-columns was
    listed. Grouped by prefix rather than enumerated, since the labels-cache and
    row-ranges-cache flags are pure boilerplate.
  • -querier.query-protection.rejection (Implement Resource Based Throttling on Querier #7442) added to the existing query-rejection
    bullet, and -querier.query-protection.eviction.max-evictions-per-cycle (Add Query Resource Based Eviction #7488) to
    the eviction bullet.

Deliberately not graduated

Audit outcome: two FEATUREs that look missing but are not

I checked all 14 of this cycle's FEATUREs. #7374 (timeout classification) and #7385
(-memberlist.cluster-label) have no experimental marker anywhere — no EXPERIMENTAL:
in the flag help, no WarnExperimentalUse, no mention in their changelog entries. Adding
them to v1-guarantees.md would retroactively remove guarantees from features that
shipped with them, so I left them out. Flagging it in case that was not the intent.

Older gaps found but left alone

Outside this cycle's scope, so not in this PR — worth a 1.23.0 follow-up alongside the
make check-experimental-flags lint idea: -distributor.num-push-workers, the ring
token-generation strategy, ruler ring replication factor / zone awareness, ruler rule
deduplication, and the expanded postings cache.

-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 (cortexproject#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 (cortexproject#7442) and
  -querier.query-protection.eviction.max-evictions-per-cycle (cortexproject#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 cortexproject#7610 changed the file format this cycle. The regex matcher has only two minors of exposure
and cortexproject#7562 fixed cross-tenant stale cache reads this cycle.

Refs cortexproject#5922

Signed-off-by: Charlie Le <charlie_le@apple.com>
@CharlieTLe
CharlieTLe force-pushed the release-1.22-pr-c-experimental branch from 40de753 to 2438ad0 Compare August 20, 2026 01:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant