Repository navigation
promql: fix panic in extendFloats on a series with an empty window - #19431
roidelapluie merged 2 commits into
Conversation
extendFloats computes lastSampleIndex as len(floats)-1 and immediately
dereferences floats[lastSampleIndex] without checking for an empty slice.
matrixSelector calls it for every series the querier returned, and a series
can be returned and then trimmed to no samples at all: selection is decided
per chunk while trimming is per sample, so a chunk that spans the query
window without holding a sample inside it yields an empty slice.
A bare range-vector query with the anchored or smoothed modifier then fails
with "unexpected error: runtime error: index out of range [-1]" (anchored
leaves lastSampleIndex at -1) or "index out of range [0] with length 0"
(smoothed recomputes it as sort.Search(-1, ...), which is 0). Without the
modifier the identical query returns an empty result.
The trigger is ordinary: any scrape gap longer than range+lookbackDelta,
queried inside the gap. The panic is recovered, so the query returns HTTP
422 and the server logs a stack trace per attempt rather than crashing.
Return the empty slice before indexing. floats is returned as-is rather
than a fresh []FPoint{} so the caller can still return it to the pool.
Returning empty here matches the behaviour already established for the
function-argument path in prometheus#17479, which fixed resets/changes to return
empty for anchored selectors when the samples are outside the range.
The regression cases cover both modifiers, the no-modifier control, and two
cases asserting that extension still produces the right values when the
window does contain samples. Both new cases fail on an unpatched tree.
Signed-off-by: Charlie Le <[email protected]>
4c48ec0 to
895958a
Compare
vpranckaitis
left a comment
There was a problem hiding this comment.
Thanks for the fix, left a few small comments and suggestions.
| # A series can be selected on chunk granularity and then trimmed to no samples | ||
| # at all: the chunk below spans 0s..1000s, so it overlaps the 2m window | ||
| # evaluated at 500s while neither sample falls inside it. extendFloats used to | ||
| # index into that empty slice and panic, with "index out of range [-1]" for | ||
| # anchored and "index out of range [0] with length 0" for smoothed. | ||
| load 1000s | ||
| emptyrange 1 2 | ||
|
|
||
| # Control: without a modifier this has always been an empty result. | ||
| eval instant at 500s emptyrange[2m] | ||
| expect range vector from 380s to 500s step 60s | ||
|
|
||
| eval instant at 500s emptyrange[2m] anchored | ||
| expect range vector from 380s to 500s step 60s | ||
|
|
||
| eval instant at 500s emptyrange[2m] smoothed | ||
| expect range vector from 380s to 500s step 60s | ||
|
|
||
| clear | ||
|
|
||
| # The extension itself still works when the window does contain samples. The | ||
| # samples on both boundaries are replaced by the extension's own endpoints, so | ||
| # the result is the 200s sample framed by mint and maxt. | ||
| load 100s | ||
| posrange 1 2 3 4 | ||
|
|
||
| eval instant at 300s posrange[200s] anchored | ||
| expect range vector from 100s to 300s step 100s | ||
| posrange 2 3 4 | ||
|
|
||
| eval instant at 300s posrange[200s] smoothed | ||
| expect range vector from 100s to 300s step 100s | ||
| posrange 2 3 4 |
There was a problem hiding this comment.
The mix of durations in minutes and in seconds makes it more difficult to comprehend these tests. Especially when extended selectors also take into account lookback delta which is 5m by default – so you have to translate that to seconds and see that it doesn't reach the earlier or the later samples.
I suggest changing all the durations in these tests to minutes, so that the math would be easier and you would need to deal with smaller numbers. You could use some small round numbers which would make it clearer when selector range overlaps or doesn't with the samples (e.g. load samples 20m apart, and query at 10m with 2m range).
| // A series can be selected on chunk granularity and then trimmed to no | ||
| // samples at all, so floats may be empty here. Return it as-is rather than | ||
| // a fresh slice, so the caller can still hand it back to the pool. | ||
| if len(floats) == 0 { | ||
| return floats | ||
| } |
There was a problem hiding this comment.
I think this comment doesn't fit here, because this function shouldn't be concerned about how selecting chunks and filtering samples happens. It is the job of the caller to handle these things properly. So only the check for non-empty floatsshould be enough here.
It might be even better to extract this check outside of this function, where also this comment would make more sense. However, there's a bit of code duplication in the place where extendFloats() is being called, so it wouldn't look as clean without some extra code refactoring:
Lines 2880 to 2892 in 895958a
So maybe it's ok to go the simpler route and have the emptiness check here.
There was a problem hiding this comment.
I would have the emptiness check here.
| ## Unreleased | ||
|
|
||
| - [BUGFIX] Discovery/AWS: Defer region resolution in EC2, ECS, RDS, MSK, ElastiCache, and Lightsail service discovery configs from YAML unmarshaling to SD init time. `promtool check config` and other config-only operations no longer make network calls to the EC2 instance metadata service (IMDS) when the region is omitted, which is supported by the documented configuration. Region resolution errors now surface at the discovery's first refresh instead of failing config validation. #19037 | ||
| - [BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. The query failed with `unexpected error: runtime error: index out of range [-1]`; it now returns an empty result, as it does without the modifier. #19431 |
There was a problem hiding this comment.
Correct me if I'm wrong, but I think you don't need to manually add changelog entries here. They should be automatically generated during the new version release, from the Release notes for end users field in the PR description.
Drop the manual CHANGELOG entry; the release-notes block in the PR description generates it at release time. Move the chunk-selection-vs-sample-trimming explanation out of extendFloats. That is the caller's concern, not this function's, so only the emptiness check and a note about returning the slice for pooling remain. Restate the new promqltest durations in minutes. Mixing seconds and minutes made the cases hard to check against the 5m default lookback delta; with samples 20m apart and a 2m window queried at 10m, the widened sample windows (3m..10m anchored, 3m..15m smoothed) are visibly clear of both samples. Signed-off-by: Charlie Le <[email protected]>
|
Thanks! |
##### [\`v3.15.0\`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#18081](prometheus/prometheus#18081). [#18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#12024](prometheus/prometheus#12024). [#18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @ modifier/offset when evaluating the info series, so info(v @ T) enriches as of T consistently instead of depending on the query start/eval time. [#19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#19422](prometheus/prometheus#19422). [#19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#19814](prometheus/prometheus#19814)
##### [\`v3.15.0\`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#18081](prometheus/prometheus#18081). [#18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#12024](prometheus/prometheus#12024). [#18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @ modifier/offset when evaluating the info series, so info(v @ T) enriches as of T consistently instead of depending on the query start/eval time. [#19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#19422](prometheus/prometheus#19422). [#19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#19814](prometheus/prometheus#19814)
##### [\`v3.15.0\`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#18081](prometheus/prometheus#18081). [#18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#12024](prometheus/prometheus#12024). [#18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @ modifier/offset when evaluating the info series, so info(v @ T) enriches as of T consistently instead of depending on the query start/eval time. [#19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#19422](prometheus/prometheus#19422). [#19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#19814](prometheus/prometheus#19814)
##### [\`v3.15.0\`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#18081](prometheus/prometheus#18081). [#18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#12024](prometheus/prometheus#12024). [#18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @ modifier/offset when evaluating the info series, so info(v @ T) enriches as of T consistently instead of depending on the query start/eval time. [#19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#19422](prometheus/prometheus#19422). [#19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#19814](prometheus/prometheus#19814)
##### [\`v3.15.0\`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#18081](prometheus/prometheus#18081). [#18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#12024](prometheus/prometheus#12024). [#18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @ modifier/offset when evaluating the info series, so info(v @ T) enriches as of T consistently instead of depending on the query start/eval time. [#19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#19422](prometheus/prometheus#19422). [#19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#19814](prometheus/prometheus#19814)
…→ v3.15.0) (#769) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [quay.io/prometheus/prometheus](https://github.com/prometheus/prometheus) | minor | `v3.14.0` → `v3.15.0` | --- ### Release Notes <details> <summary>prometheus/prometheus (quay.io/prometheus/prometheus)</summary> ### [`v3.15.0`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0): 3.15.0 / 2026-09-24 [Compare Source](prometheus/prometheus@v3.14.0...v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#​18081](prometheus/prometheus#18081). [#​18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#​19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#​19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#​19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#​18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#​12024](prometheus/prometheus#12024). [#​18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#​18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#​18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#​19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#​19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#​19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#​19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#​19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#​19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#​19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#​19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#​19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#​19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#​19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#​19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#​19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#​18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#​19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#​19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#​19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#​19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#​19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#​19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#​19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#​19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#​19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#​19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#​19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#​19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#​19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#​19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#​19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#​19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#​19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#​19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#​19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#​19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#​19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#​19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#​19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#​19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#​19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#​19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#​19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#​19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#​19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#​19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#​19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#​19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#​19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#​18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#​19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#​19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#​19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @​ modifier/offset when evaluating the info series, so info(v @​ T) enriches as of T consistently instead of depending on the query start/eval time. [#​19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#​19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#​19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#​19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#​19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#​19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#​19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#​19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#​19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#​19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#​19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#​19422](prometheus/prometheus#19422). [#​19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#​19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#​19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#​19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#​18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#​19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#​19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#​19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#​19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#​19814](prometheus/prometheus#19814) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/London) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjExNS4xMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==--> Reviewed-on: https://git.hayden.moe/hayden/phoebe/pulls/769
…➔ v3.15.0) (#2199) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [quay.io/prometheus/prometheus](https://github.com/prometheus/prometheus) | minor | `v3.14.0` → `v3.15.0` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/567) for more information. --- ### Release Notes <details> <summary>prometheus/prometheus (quay.io/prometheus/prometheus)</summary> ### [`v3.15.0`](https://github.com/prometheus/prometheus/releases/tag/v3.15.0): 3.15.0 / 2026-09-24 [Compare Source](prometheus/prometheus@v3.14.0...v3.15.0) - \[CHANGE] PromQL: A range query whose `end` was not aligned to `step` caused subqueries inside it to evaluate past the parent's last actual step, inflating `peakSamples` in the query stats and against the `query.max-samples` limit, and wasting storage I/O reading samples that were never used in the result. Add tests to prevent regression of the fix made in [#​18081](prometheus/prometheus#18081). [#​18598](prometheus/prometheus#18598) - \[CHANGE] PromQL: Do not register a start timestamp reset if the start timestamp hasn't changed between subsequent samples. [#​19454](prometheus/prometheus#19454) - \[CHANGE] Logging: Deprecate `--log.level`; use `runtime.log_level` configuration to supply the default level. [#​19511](prometheus/prometheus#19511) - \[FEATURE] Configuration: Allow changing the process log level through `runtime.log_level` on configuration reload. [#​19511](prometheus/prometheus#19511) - \[FEATURE] Prometheus: Add `--auto-gomemlimit.refresh-interval` flag to periodically re-detect the container or system memory limit and update `GOMEMLIMIT` at runtime. [#​18843](prometheus/prometheus#18843) - \[FEATURE] Scraping: Add support for scraping targets via Unix Domain Sockets. [#​12024](prometheus/prometheus#12024). [#​18091](prometheus/prometheus#18091) - \[FEATURE] scrape: Implement OM2.0 scrape format. [#​18606](prometheus/prometheus#18606) - \[ENHANCEMENT] Reduce TSDB head CPU utilization when initializing. [#​18001](prometheus/prometheus#18001) - \[ENHANCEMENT] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id`. [#​19386](prometheus/prometheus#19386) - \[ENHANCEMENT] Mixin: Add a p95/p99 remote-write send-batch latency panel to the remote-write dashboard. [#​19500](prometheus/prometheus#19500) - \[ENHANCEMENT] Mixin: Support native histograms in the remote-write send-batch latency panel. [#​19522](prometheus/prometheus#19522) - \[ENHANCEMENT] PromQL/TSDB: The `--enable-feature=st-storage` flag now automatically enables XOR2 float chunk encoding and ST-capable histogram chunk encoding, so you no longer need to pass `xor2-encoding` and `histograms-st-encoding` alongside it. [#​19518](prometheus/prometheus#19518) - \[ENHANCEMENT] Remote write / Alertmanager: upgrade sigv4 to v0.5.0, adding `session_name` and `tags` fields for STS AssumeRole sessions. The previously undocumented `service_name` field is now also documented. [#​19569](prometheus/prometheus#19569) - \[ENHANCEMENT] Scraping: Support zstd-compressed scrape responses, enabled via feature flag `zstd-scrape`. [#​19502](prometheus/prometheus#19502) - \[ENHANCEMENT] TSDB: Stabilize the XOR2 float chunk encoding. `--enable-feature=xor2-encoding` is deprecated; use `storage.tsdb.chunk_encoding.floats: xor2` instead. Check that other software reading the TSDB directly (e.g. Thanos sidecar) supports XOR2 before enabling. [#​19461](prometheus/prometheus#19461) - \[ENHANCEMENT] TSDB: add `prometheus_tsdb_head_appenders_created_total` metric. [#​19411](prometheus/prometheus#19411) - \[ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations. [#​19410](prometheus/prometheus#19410) - \[ENHANCEMENT] UI: Show the effective configuration for each scrape pool on the Targets and Service Discovery pages. [#​19384](prometheus/prometheus#19384) - \[ENHANCEMENT] scrape: Enable start time synthesis for summary `_count` and `_sum` series in scrape appender v2. [#​19323](prometheus/prometheus#19323) - \[ENHANCEMENT] scrape: stop all pools in parallel for faster shutdowns. [#​19295](prometheus/prometheus#19295) - \[ENHANCEMENT] storage/remote: Add undocumented failed\_request\_logging config field to debug log remote write V2 requests on send errors. [#​19249](prometheus/prometheus#19249) - \[ENHANCEMENT] TSDB: Add fast path for XOR chunk decompression to speed up queries. [#​18049](prometheus/prometheus#18049) - \[ENHANCEMENT] UI: Improve native histogram table formatting and add a background bar indicating the bucket count. [#​19332](prometheus/prometheus#19332) - \[ENHANCEMENT] TSDB: Add `prometheus_tsdb_head_series_pending_commit_underflow_total` to report pending-sample reservation underflows. [#​19470](prometheus/prometheus#19470) - \[PERF] AWS SD: Build RDS cluster labels once per cluster instead of once per instance. [#​19504](prometheus/prometheus#19504) - \[PERF] AWS SD: Describe RDS instances of different clusters concurrently, bounded by `request_concurrency`. [#​19506](prometheus/prometheus#19506) - \[PERF] AWS SD: Describe each ElastiCache resource once per refresh instead of twice. [#​19585](prometheus/prometheus#19585) - \[PERF] Remote read: Avoid cloning labels for sampled reads when no external labels are configured. [#​19503](prometheus/prometheus#19503) - \[PERF] Remote write: Reuse OTLP converter scratch state between requests. [#​19388](prometheus/prometheus#19388) - \[PERF] scrape: conversion from classic to native histograms should only parse start times when enabled. [#​19446](prometheus/prometheus#19446) - \[BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp. [#​19387](prometheus/prometheus#19387) - \[BUGFIX] PromQL: Fix info() enrichment when input series use different subsets of identifying labels. [#​19557](prometheus/prometheus#19557) - \[BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. [#​19413](prometheus/prometheus#19413) - \[BUGFIX] TSDB: Don't silently drop samples when head garbage collection removes a series while it is being appended to. [#​19272](prometheus/prometheus#19272) - \[BUGFIX] TSDB: Keep series with uncommitted samples during selected- and stale-series compaction, including when appenders overlap. [#​19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Do not retain head series after a synthetic start-timestamp zero sample is rejected. [#​19470](prometheus/prometheus#19470) - \[BUGFIX] TSDB: Prevent query panics during series eviction after WAL replay. [#​19664](prometheus/prometheus#19664) - \[BUGFIX] TSDB: fix potential deadlock between mmapSeriesChunks and gcSeries. [#​19460](prometheus/prometheus#19460) - \[BUGFIX] TSDB: fix default block reload interval for custom options. [#​19368](prometheus/prometheus#19368) - \[BUGFIX] AWS SD: Do not crash on serverless MSK clusters or MSK clusters without Open Monitoring. [#​19194](prometheus/prometheus#19194) - \[BUGFIX] AWS SD: Do not panic when the ElastiCache API omits optional fields of a serverless cache or cache cluster. [#​19435](prometheus/prometheus#19435) - \[BUGFIX] AWS SD: Reject non-positive `request_concurrency` instead of hanging service discovery indefinitely. [#​19524](prometheus/prometheus#19524) - \[BUGFIX] Discovery/AWS: Avoid a panic when discovering standalone ECS tasks with custom task groups. [#​19302](prometheus/prometheus#19302) - \[BUGFIX] Discovery: Do not panic in AWS Lightsail service discovery when an instance is missing optional fields such as availability zone, blueprint, bundle, name, state or support code. [#​19324](prometheus/prometheus#19324) - \[BUGFIX] Discovery: delete the stale `prometheus_sd_last_update_timestamp_seconds` series for a config that is removed on reload. [#​19131](prometheus/prometheus#19131) - \[BUGFIX] HTTP: Avoid truncating compressed responses when handlers set Content-Length. [#​19661](prometheus/prometheus#19661) - \[BUGFIX] IONOS SD: Do not panic when the API response omits the server, NIC or volume collections, or a server's properties. [#​19438](prometheus/prometheus#19438) - \[BUGFIX] Metadata will not affect the number of Remote Write v2 shards. [#​19218](prometheus/prometheus#19218) - \[BUGFIX] Mixins: Fix label mismatches that prevented PrometheusHAGroupNotIngestingSamples and PrometheusHAGroupCrashlooping from firing. [#​19444](prometheus/prometheus#19444) - \[BUGFIX] Native histograms: `DetectReset` no longer misses a counter reset when a populated bucket behind an empty one disappears, which could make histogram `rate()`/`increase()` undercount. [#​19367](prometheus/prometheus#19367) - \[BUGFIX] Never skip histogram buckets for histogram\_stddev and histogram\_stdvar functions. [#​19521](prometheus/prometheus#19521) - \[BUGFIX] OTLP: Do not abort an entire OTLP payload ingestion if one metric has no datapoints. [#​19343](prometheus/prometheus#19343) - \[BUGFIX] PromQL: Fix FastRegexMatcher false-positive match when a capturing group is directly adjacent to a literal (e.g. `.*\|(foo)\|.*`). [#​19516](prometheus/prometheus#19516) - \[BUGFIX] PromQL: Fix a panic in range selectors using the experimental `anchored` or `smoothed` modifier when the selected series has no samples inside the query window, for example a query evaluated inside a scrape gap. [#​19431](prometheus/prometheus#19431) - \[BUGFIX] PromQL: Fix empty results when a subquery with `@` is used as the matrix argument of a call that is not step-invariant (for example `quantile_over_time(scalar(x), metric[...:...] @ T)`). [#​19187](prometheus/prometheus#19187) - \[BUGFIX] PromQL: Make the "found duplicate series for the match group" many-to-many matching error message deterministic by sorting the two duplicate labels. [#​18810](prometheus/prometheus#18810) - \[BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. [#​19403](prometheus/prometheus#19403) - \[BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. [#​19406](prometheus/prometheus#19406) - \[BUGFIX] PromQL: Report the position of the histogram argument rather than of a scalar argument in the native histogram NaN observation annotations of `histogram_quantile` and `histogram_fraction`. [#​19330](prometheus/prometheus#19330) - \[BUGFIX] PromQL: info() now applies the @​ modifier/offset when evaluating the info series, so info(v @​ T) enriches as of T consistently instead of depending on the query start/eval time. [#​19266](prometheus/prometheus#19266) - \[BUGFIX] Rules: Fix a panic when a rule manager created without a logger loads a rule file containing multiple YAML documents. [#​19433](prometheus/prometheus#19433) - \[BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. [#​19328](prometheus/prometheus#19328) - \[BUGFIX] Scrape: JSON log formatter correctly format scrape target info. [#​19472](prometheus/prometheus#19472) - \[BUGFIX] TSDB: Fix in-order chunk ID overflow by wrapping head chunk IDs modulo 2^23 so they never collide with the out-of-order flag bit. [#​19450](prometheus/prometheus#19450) - \[BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. [#​19216](prometheus/prometheus#19216) - \[BUGFIX] UI: Remove an extraneous X-axis tick mark in the native histogram chart when using the "linear" display mode. [#​19326](prometheus/prometheus#19326) - \[BUGFIX] discovery/aws: Avoid a panic when an ElastiCache ARN is missing its resource ID. [#​19333](prometheus/prometheus#19333) - \[BUGFIX] discovery/aws: Do not panic on MSK clusters whose optional API fields are absent. [#​19584](prometheus/prometheus#19584) - \[BUGFIX] discovery/aws: Do not panic when the EC2 API omits optional instance fields. [#​19512](prometheus/prometheus#19512) - \[BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. [#​19396](prometheus/prometheus#19396) - \[BUGFIX] discovery/aws: MSK Optional Custom Configuration Fields [#​19422](prometheus/prometheus#19422). [#​19422](prometheus/prometheus#19422) - \[BUGFIX] discovery/ionos: Fix panic when the IONOS API omits optional server fields. [#​19418](prometheus/prometheus#19418) - \[BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. [#​19404](prometheus/prometheus#19404) - \[BUGFIX] histogram: Fix Compact moving buckets to wrong indices, and producing negative bucket counts for integer histograms, when more than one span is merged in the same pass. [#​19312](prometheus/prometheus#19312) - \[BUGFIX] promtool: Fixed `tsdb dump` silently dropping native histogram samples. [#​18051](prometheus/prometheus#18051) - \[BUGFIX] scrape: fix data race in `Manager.TargetsDroppedCounts` to avoid miscounting dropped targets. [#​19304](prometheus/prometheus#19304) - \[BUGFIX] scrape: fix nil histogram when native and classic histograms are mixed in one metric family. [#​19452](prometheus/prometheus#19452) - \[BUGFIX] TSDB: Fix WAL and GC log messages to emit human-readable duration strings instead of nanosecond integers. [#​19307](prometheus/prometheus#19307) - \[BUGFIX] TSDB: Avoid WAL corruption after a failed WAL write in Agent mode. [#​19700](prometheus/prometheus#19700) - \[BUGFIX] Agent: Ignore unknown WAL record types, to help users rolling back. [#​19814](prometheus/prometheus#19814) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Paris) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMDQuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjEwNC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL21pbm9yIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/2199
extendFloatsdereferencesfloats[len(floats)-1]with no emptiness check, andmatrixSelectorcalls it for every series the querier returned. A series can be returned andthen trimmed to nothing — selection is per chunk, trimming is per sample — so a chunk that
spans the query window without holding a sample inside it yields an empty slice:
Two messages from one hole:
anchoredleaves the index atlen-1== -1 (Go omits the lengthsuffix for a negative index),
smoothedrecomputes it assort.Search(-1, …)== 0. Anyscrape gap longer than
range + lookbackDeltareaches this when queried inside the gap, sincethe modifiers widen the sample window by
lookbackDelta; reproduced against the releasedprom/prometheus:v3.13.2image by killing a real target for 40s. The panic is recovered, sothis is a 422 and a logged stack trace per attempt, not a crash.
The fix returns the empty slice before indexing, as-is rather than a fresh
[]FPoint{}sothe caller can still pool it. That matches #17479, which fixed
resets/changesto returnempty for anchored selectors when the samples are outside the range.
extendFloatshasexactly two callers, both in
matrixSelector, so this is the whole reachable surface —rate(foo[2m] anchored)goes throughextendedRateand was already correct. Whether such aseries should reach
matrixSelectorat all is a larger question this PR does not touch.Tests: five
promqltestcases inextended_vectors.test— the two panicking queries, theno-modifier control, and two asserting extension still produces the right values when the
window does contain samples. The two panic cases were confirmed to fail on an unpatched tree.
Which issue(s) does the PR fix:
Release notes for end users (ALL commits must be considered).