Change8

v3.9.0-rc.0

Breaking Changes
📦 prometheus
1 breaking5 features🐛 16 fixes🔧 7 symbols

Summary

This release graduates Native Histograms to a stable feature, requiring configuration via `scrape_native_histogram`, and introduces several new features across the API, Promtool, and UI, alongside numerous bug fixes in PromQL and TSDB.

⚠️ Breaking Changes

  • Native Histograms are no longer experimental. The feature flag `native-histogram` is now a no-op. You must enable the configuration setting `scrape_native_histogram` to collect Native Histogram samples from exporters.

Migration Steps

  1. If you rely on Native Histograms, ensure you configure `scrape_native_histogram` in your configuration, as the `native-histogram` feature flag is now ignored.
  2. Review PromQL queries that might have been affected by fixes related to delayed name removal or OR expressions.

✨ New Features

  • API: Added `/api/v1/features` endpoint for clients to determine supported features.
  • Promtool: Added `start_timestamp` field for unit tests.
  • Promtool: Added `--format seriesjson` option to `tsdb dump` to output only series labels in JSON format.
  • Added `--storage.tsdb.delay-compact-file.path` flag for improved interoperability with Thanos.
  • UI: Added an option on the query drop-down menu to duplicate a query panel.

🐛 Bug Fixes

  • UI: PromQL autocomplete now correctly shows the type and HELP text for OpenMetrics counters ending in `_total`.
  • UI: Fixed codemirror-promql incorrectly suggesting label completions after the closing curly brace of a vector selector.
  • UI: Query editor no longer suggests a duration unit if one is already present after a number.
  • PromQL: Fixed some "vector cannot contain metrics with the same labelset" errors when experimental delayed name removal is enabled.
  • PromQL: Fixed possible corruption of PromQL text if the query had an empty `ignoring()` and non-empty grouping.
  • PromQL: Fixed resets/changes to return empty results for anchored selectors when all samples are outside the range.
  • PromQL: Checked more consistently for many-to-one matching in filter binary operators.
  • PromQL: Fixed collision in unary negation with non-overlapping series.
  • PromQL: Fixed collision in `label_join` and `label_replace` with non-overlapping series.
  • PromQL: Fixed inconsistent results for queries with OR expression when experimental delayed name removal is enabled.
  • PromQL: Ensured that `rate`/`increase`/`delta` of histograms results in a gauge histogram.
  • PromQL: Avoided panic while iterating over invalid histograms.
  • TSDB: Rejected chunk files whose encoded chunk length overflows int.
  • TSDB: Avoided panic during resolution reduction of invalid histograms.
  • Remote-write Receive: Avoided duplicate labels when the experimental type-and-unit-label feature is enabled.
  • OTLP Receiver: Only writes metadata to disk when the experimental metadata-wal-records feature is enabled.

🔧 Affected Symbols

TSDB/api/v1/featurespromtool tsdb dumpprometheus_notifications_latency_histogram_secondsprometheus_sd_refresh metricsprometheus_tsdb_sample_ooo_deltacodemirror-promql