Subject: CVS commit: pkgsrc/databases/mimir
From: Thomas Klausner
Date: 2025-01-12 11:22:06
Message id: 20250112102206.87DEAFC1D@cvs.NetBSD.org

Log Message:
mimir: update to 2.15.0.

## 2.15.0

### Grafana Mimir

* [CHANGE] Alertmanager: the following metrics are not exported for a given \ 
`user` when the metric value is zero: #9359
  * `cortex_alertmanager_alerts_received_total`
  * `cortex_alertmanager_alerts_invalid_total`
  * `cortex_alertmanager_partial_state_merges_total`
  * `cortex_alertmanager_partial_state_merges_failed_total`
  * `cortex_alertmanager_state_replication_total`
  * `cortex_alertmanager_state_replication_failed_total`
  * `cortex_alertmanager_alerts`
  * `cortex_alertmanager_silences`
* [CHANGE] Distributor: Drop experimental \ 
`-distributor.direct-otlp-translation-enabled` flag, since direct OTLP \ 
translation is well tested at this point. #9647
* [CHANGE] Ingester: Change `-initial-delay` for circuit breakers to begin when \ 
the first request is received, rather than at breaker activation. #9842
* [CHANGE] Query-frontend: apply query pruning before query sharding instead of \ 
after. #9913
* [CHANGE] Ingester: remove experimental flags \ 
`-ingest-storage.kafka.ongoing-records-per-fetch` and \ 
`-ingest-storage.kafka.startup-records-per-fetch`. They are removed in favour of \ 
`-ingest-storage.kafka.max-buffered-bytes`. #9906
* [CHANGE] Ingester: Replace `cortex_discarded_samples_total` label from \ 
`sample-out-of-bounds` to `sample-timestamp-too-old`. #9885
* [CHANGE] Ruler: the `/prometheus/config/v1/rules` does not return an error \ 
anymore if a rule group is missing in the object storage after been successfully \ 
returned by listing the storage, because it could have been deleted in the \ 
meanwhile. #9936
* [CHANGE] Querier: The `.` pattern in regular expressions in PromQL matches \ 
newline characters. With this change regular expressions like `.*` match strings \ 
that include `\n`. To maintain the old behaviour, you will have to change \ 
regular expressions by replacing all `.` patterns with `[^\n]`, e.g. \ 
`foo[^\n]*`. This upgrades PromQL compatibility from Prometheus 2.0 to 3.0. \ 
#9844
* [CHANGE] Querier: Lookback and range selectors are left open and right closed \ 
(previously left closed and right closed). This change affects queries when the \ 
evaluation time perfectly aligns with the sample timestamps. For example assume \ 
querying a timeseries with evenly spaced samples exactly 1 minute apart. \ 
Previously, a range query with `5m` would usually return 5 samples, or 6 samples \ 
if the query evaluation aligns perfectly with a scrape. Now, queries like this \ 
will always return 5 samples. This upgrades PromQL compatibility from Prometheus \ 
2.0 to 3.0. #9844
* [CHANGE] Querier: promql(native histograms): Introduce exponential \ 
interpolation. #9844
* [CHANGE] Remove deprecated `api.get-request-for-ingester-shutdown-enabled` \ 
setting, which scheduled for removal in 2.15. #10197
* [FEATURE] Querier: add experimental streaming PromQL engine, enabled with \ 
`-querier.query-engine=mimir`. #10067
* [FEATURE] Distributor: Add support for `lz4` OTLP compression. #9763
* [FEATURE] Query-frontend: added experimental configuration options \ 
`query-frontend.cache-errors` and `query-frontend.results-cache-ttl-for-errors` \ 
to allow non-transient responses to be cached. When set to `true` error \ 
responses from hitting limits or bad data are cached for a short TTL. #9028
* [FEATURE] Query-frontend: add middleware to control access to specific PromQL \ 
experimental functions on a per-tenant basis. #9798
* [FEATURE] gRPC: Support S2 compression. #9322
  * `-alertmanager.alertmanager-client.grpc-compression=s2`
  * `-ingester.client.grpc-compression=s2`
  * `-querier.frontend-client.grpc-compression=s2`
  * `-querier.scheduler-client.grpc-compression=s2`
  * `-query-frontend.grpc-client-config.grpc-compression=s2`
  * `-query-scheduler.grpc-client-config.grpc-compression=s2`
  * `-ruler.client.grpc-compression=s2`
  * `-ruler.query-frontend.grpc-client-config.grpc-compression=s2`
* [FEATURE] Alertmanager: limit added for maximum size of the Grafana state \ 
(`-alertmanager.max-grafana-state-size-bytes`). #9475
* [FEATURE] Alertmanager: limit added for maximum size of the Grafana \ 
configuration (`-alertmanager.max-config-size-bytes`). #9402
* [FEATURE] Ingester: Experimental support for ingesting out-of-order native \ 
histograms. This is disabled by default and can be enabled by setting \ 
`-ingester.ooo-native-histograms-ingestion-enabled` to `true`. #7175
* [FEATURE] Distributor: Added `-api.skip-label-count-validation-header-enabled` \ 
option to allow skipping label count validation on the HTTP write path based on \ 
`X-Mimir-SkipLabelCountValidation` header being `true` or not. #9576
* [FEATURE] Ruler: Add experimental support for caching the contents of rule \ 
groups. This is disabled by default and can be enabled by setting \ 
`-ruler-storage.cache.rule-group-enabled`. #9595 #10024
* [FEATURE] PromQL: Add experimental `info` function. Experimental functions are \ 
disabled by default, but can be enabled setting \ 
`-querier.promql-experimental-functions-enabled=true` in the query-frontend and \ 
querier. #9879
* [FEATURE] Distributor: Support promotion of OTel resource attributes to \ 
labels. #8271
* [FEATURE] Querier: Add experimental `double_exponential_smoothing` PromQL \ 
function. Experimental functions are disabled by default, but can be enabled by \ 
setting `-querier.promql-experimental-functions-enabled=true` in the \ 
query-frontend and querier. #9844
* [ENHANCEMENT] Query Frontend: Return server-side `bytes_processed` statistics \ 
following Server-Timing format. #9645 #9985
* [ENHANCEMENT] mimirtool: Adds bearer token support for mimirtool's analyze \ 
ruler/prometheus commands. #9587
* [ENHANCEMENT] Ruler: Support `exclude_alerts` parameter in \ 
`<prometheus-http-prefix>/api/v1/rules` endpoint. #9300
* [ENHANCEMENT] Distributor: add a metric to track tenants who are sending \ 
newlines in their label values called \ 
`cortex_distributor_label_values_with_newlines_total`. #9400
* [ENHANCEMENT] Ingester: improve performance of reading the WAL. #9508
* [ENHANCEMENT] Query-scheduler: improve the errors and traces emitted by \ 
query-schedulers when communicating with queriers. #9519
* [ENHANCEMENT] Compactor: uploaded blocks cannot be bigger than max configured \ 
compactor time range, and cannot cross the boundary for given time range. #9524
* [ENHANCEMENT] The distributor now validates that received label values only \ 
contain allowed characters. #9185
* [ENHANCEMENT] Add SASL plain authentication support to Kafka client used by \ 
the experimental ingest storage. Configure SASL credentials via the following \ 
settings: #9584
  * `-ingest-storage.kafka.sasl-password`
  * `-ingest-storage.kafka.sasl-username`
* [ENHANCEMENT] memberlist: TCP transport write path is now non-blocking, and is \ 
configurable by new flags: #9594
  * `-memberlist.max-concurrent-writes`
  * `-memberlist.acquire-writer-timeout`
* [ENHANCEMENT] memberlist: Notifications can now be processed once per interval \ 
specified by `-memberlist.notify-interval` to reduce notify storm CPU activity \ 
in large clusters. #9594
* [ENHANCEMENT] Query-scheduler: Remove the experimental \ 
`query-scheduler.prioritize-query-components` flag. Request queues always \ 
prioritize query component dequeuing above tenant fairness. #9703
* [ENHANCEMENT] Ingester: Emit traces for block syncing, to join up block-upload \ 
traces. #9656
* [ENHANCEMENT] Querier: Enable the optional querying of additional storage \ 
queryables. #9712
* [ENHANCEMENT] Ingester: Disable the push circuit breaker when ingester is in \ 
read-only mode. #9760
* [ENHANCEMENT] Ingester: Reduced lock contention in the `PostingsForMatchers` \ 
cache. #9773
* [ENHANCEMENT] Storage: Allow HTTP client settings to be tuned for GCS and \ 
Azure backends via an `http` block or corresponding CLI flags. This was already \ 
supported by the S3 backend. #9778
* [ENHANCEMENT] Ruler: Support `group_limit` and `group_next_token` parameters \ 
in the `<prometheus-http-prefix>/api/v1/rules` endpoint. #9563
* [ENHANCEMENT] Ingester: improved lock contention affecting read and write \ 
latencies during TSDB head compaction. #9822
* [ENHANCEMENT] Distributor: when a label value fails validation due to invalid \ 
UTF-8 characters, don't include the invalid characters in the returned error. \ 
#9828
* [ENHANCEMENT] Ingester: when experimental ingest storage is enabled, do not \ 
buffer records in the Kafka client when fetch concurrency is in use. #9838 #9850
* [ENHANCEMENT] Compactor: refresh deletion marks when updating the bucket index \ 
concurrently. This speeds up updating the bucket index by up to 16 times when \ 
there is a lot of blocks churn (thousands of blocks churning every cleanup \ 
cycle). #9881
* [ENHANCEMENT] PromQL: make `sort_by_label` stable. #9879
* [ENHANCEMENT] Distributor: Initialize ha_tracker cache before ha_tracker and \ 
distributor reach running state and begin serving writes. #9826 #9976
* [ENHANCEMENT] Ingester: `-ingest-storage.kafka.max-buffered-bytes` to limit \ 
the memory for buffered records when using concurrent fetching. #9892
* [ENHANCEMENT] Querier: improve performance and memory consumption of queries \ 
that select many series. #9914
* [ENHANCEMENT] Ruler: Support OAuth2 and proxies in Alertmanager client #9945 #10030
* [ENHANCEMENT] Ingester: Add \ 
`-blocks-storage.tsdb.bigger-out-of-order-blocks-for-old-samples` to build 24h \ 
blocks for out-of-order data belonging to the previous days instead of building \ 
smaller 2h blocks. This reduces pressure on compactors and ingesters when the \ 
out-of-order samples span multiple days in the past. #9844 #10033 #10035
* [ENHANCEMENT] Distributor: allow a different limit for info series (series \ 
ending in `_info`) label count, via \ 
`-validation.max-label-names-per-info-series`. #10028
* [ENHANCEMENT] Ingester: do not reuse labels, samples and histograms slices in \ 
the write request if there are more entries than 10x the pre-allocated size. \ 
This should help to reduce the in-use memory in case of few requests with a very \ 
large number of labels, samples or histograms. #10040
* [ENHANCEMENT] Query-Frontend: prune `<subquery> and on() (vector(x)==y)` \ 
style queries and stop pruning `<subquery> < -Inf`. Triggered by \ 
https://github.com/prometheus/prometheus/pull/15245. #10026
* [ENHANCEMENT] Query-Frontend: perform request format validation before \ 
processing the request. #10093
* [BUGFIX] Fix issue where functions such as `rate()` over native histograms \ 
could return incorrect values if a float stale marker was present in the \ 
selected range. #9508
* [BUGFIX] Fix issue where negation of native histograms (eg. \ 
`-some_native_histogram_series`) did nothing. #9508
* [BUGFIX] Fix issue where `metric might not be a counter, name does not end in \ 
_total/_sum/_count/_bucket` annotation would be emitted even if `rate` or \ 
`increase` did not have enough samples to compute a result. #9508
* [BUGFIX] Fix issue where sharded queries could return annotations with \ 
incorrect or confusing position information. #9536
* [BUGFIX] Fix issue where downstream consumers may not generate correct cache \ 
keys for experimental error caching. #9644
* [BUGFIX] Fix issue where active series requests error when encountering a \ 
stale posting. #9580
* [BUGFIX] Fix pooling buffer reuse logic when \ 
`-distributor.max-request-pool-buffer-size` is set. #9666
* [BUGFIX] Fix issue when using the experimental \ 
`-ruler.max-independent-rule-evaluation-concurrency` feature, where the ruler \ 
could panic as it updates a running ruleset or shutdowns. #9726
* [BUGFIX] Always return unknown hint for first sample in non-gauge native \ 
histograms chunk to avoid incorrect counter reset hints when merging chunks from \ 
different sources. #10033
* [BUGFIX] Ensure native histograms counter reset hints are corrected when \ 
merging results from different sources. #9909
* [BUGFIX] Ingester: Fix race condition in per-tenant TSDB creation. #9708
* [BUGFIX] Ingester: Fix race condition in exemplar adding. #9765
* [BUGFIX] Ingester: Fix race condition in native histogram appending. #9765
* [BUGFIX] Ingester: Fix bug in concurrent fetching where a failure to list \ 
topics on startup would cause to use an invalid topic ID \ 
(0x00000000000000000000000000000000). #9883
* [BUGFIX] Ingester: Fix data loss bug in the experimental ingest storage when a \ 
Kafka Fetch is split into multiple requests and some of them return an error. \ 
#9963 #9964
* [BUGFIX] PromQL: `round` now removes the metric name again. #9879
* [BUGFIX] Query-Frontend: fix `QueryFrontendCodec` module initialization to set \ 
lookback delta from `-querier.lookback-delta`. #9984
* [BUGFIX] OTLP: Support integer exemplar value type. #9844
* [BUGFIX] Querier: Correct the behaviour of binary operators between native \ 
histograms and floats. #9844
* [BUGFIX] Querier: Fix stddev+stdvar aggregations to always ignore native \ 
histograms. #9844
* [BUGFIX] Querier: Fix stddev+stdvar aggregations to treat Infinity \ 
consistently. #9844
* [BUGFIX] Ingester: Chunks could have one unnecessary zero byte at the end. #9844
* [BUGFIX] OTLP receiver: Preserve colons and combine multiple consecutive \ 
underscores into one when generating metric names in suffix adding mode \ 
(`-distributor.otel-metric-suffixes-enabled`). #10075

### Mixin

* [CHANGE] Remove backwards compatibility for `thanos_memcached_` prefixed \ 
metrics in dashboards and alerts removed in 2.12. #9674 #9758
* [CHANGE] Reworked the alert `MimirIngesterStuckProcessingRecordsFromKafka` to \ 
also work when concurrent fetching is enabled. #9855
* [ENHANCEMENT] Unify ingester autoscaling panels on 'Mimir / Writes' dashboard \ 
to work for both ingest-storage and non-ingest-storage autoscaling. #9617
* [ENHANCEMENT] Alerts: Enable configuring job prefix for alerts to prevent \ 
clashes with metrics from Loki/Tempo. #9659
* [ENHANCEMENT] Dashboards: visualize the age of source blocks in the \ 
"Mimir / Compactor" dashboard. #9697
* [ENHANCEMENT] Dashboards: Include block compaction level on queried blocks in \ 
'Mimir / Queries' dashboard. #9706
* [ENHANCEMENT] Alerts: add `MimirIngesterMissedRecordsFromKafka` to detect gaps \ 
in consumed records in the ingester when using the experimental Kafka-based \ 
storage. #9921 #9972
* [ENHANCEMENT] Dashboards: Add more panels to 'Mimir / Writes' for concurrent \ 
ingestion and fetching when using ingest storage. #10021
* [BUGFIX] Dashboards: Fix autoscaling metrics joins when series churn. #9412 \ 
#9450 #9432
* [BUGFIX] Alerts: Fix autoscaling metrics joins in `MimirAutoscalerNotActive` \ 
when series churn. #9412
* [BUGFIX] Alerts: Exclude failed cache "add" operations from alerting \ 
since failures are expected in normal operation. #9658
* [BUGFIX] Alerts: Exclude read-only replicas from \ 
`IngesterInstanceHasNoTenants` alert. #9843
* [BUGFIX] Alerts: Use resident set memory for the `EtcdAllocatingTooMuchMemory` \ 
alert so that ephemeral file cache memory doesn't cause the alert to misfire. \ 
#9997
* [BUGFIX] Query-frontend: support `X-Read-Consistency-Offsets` on labels \ 
queries too.

### Jsonnet

* [CHANGE] Remove support to set Redis as a cache backend from jsonnet. #9677
* [CHANGE] Rollout-operator now defaults to storing scaling operation metadata \ 
in a Kubernetes ConfigMap. This avoids recursively invoking the admission \ 
webhook in some Kubernetes environments. #9699
* [CHANGE] Update rollout-operator version to 0.20.0. #9995
* [CHANGE] Remove the `track_sizes` feature for Memcached pods since it is \ 
unused. #10032
* [CHANGE] The configuration options `autoscaling_distributor_min_replicas` and \ 
`autoscaling_distributor_max_replicas` has been renamed to \ 
`autoscaling_distributor_min_replicas_per_zone` and \ 
`autoscaling_distributor_max_replicas_per_zone` respectively. #10019
* [FEATURE] Add support to deploy distributors in multi availability zones. #9548
* [FEATURE] Add configuration settings to set the number of Memcached replicas \ 
for each type of cache (`memcached_frontend_replicas`, \ 
`memcached_index_queries_replicas`, `memcached_chunks_replicas`, \ 
`memcached_metadata_replicas`). #9679
* [ENHANCEMENT] Add `ingest_storage_ingester_autoscaling_triggers` option to \ 
specify multiple triggers in ScaledObject created for ingest-store ingester \ 
autoscaling. #9422
* [ENHANCEMENT] Add \ 
`ingest_storage_ingester_autoscaling_scale_up_stabilization_window_seconds` and \ 
`ingest_storage_ingester_autoscaling_scale_down_stabilization_window_seconds` \ 
config options to make stabilization window for ingester autoscaling when using \ 
ingest-storage configurable. #9445
* [ENHANCEMENT] Make label-selector in ReplicaTemplate/ingester-zone-a object \ 
configurable when using ingest-storage. #9480
* [ENHANCEMENT] Add `querier_only_args` option to specify CLI flags that apply \ 
only to queriers but not ruler-queriers. #9503
* [ENHANCEMENT] Validate the Kafka client ID configured when ingest storage is \ 
enabled. #9573
* [ENHANCEMENT] Configure pod anti-affinity and tolerations to run etcd pods \ 
multi-AZ when `_config.multi_zone_etcd_enabled` is set to `true`. #9725

### Mimirtool

### Mimir Continuous Test

### Query-tee

* [FEATURE] Added `-proxy.compare-skip-samples-before` to skip samples before \ 
the given time when comparing responses. The time can be in RFC3339 format (or) \ 
RFC3339 without the timezone and seconds (or) date only. #9515
* [FEATURE] Add `-backend.config-file` for a YAML configuration file for \ 
per-backend options. Currently, it only supports additional HTTP request \ 
headers. #10081
* [ENHANCEMENT] Added human-readable timestamps to comparison failure messages. #9665

### Documentation

* [BUGFIX] Send native histograms: update the migration guide with the corrected \ 
dashboard query for switching between classic and native histograms queries. \ 
#10052

### Tools

* [FEATURE] `splitblocks`: add new tool to split blocks larger than a specified \ 
duration into multiple blocks. #9517, #9779
* [ENHANCEMENT] `copyblocks`: add `--skip-no-compact-block-duration-check`, \ 
which defaults to `false`, to simplify targeting blocks that are not awaiting \ 
compaction. #9439
* [ENHANCEMENT] `copyblocks`: add `--user-mapping` to support copying blocks \ 
between users. #10110
* [ENHANCEMENT] `kafkatool`: add SASL plain authentication support. The \ 
following new CLI flags have been added: #9584
  * `--kafka-sasl-username`
  * `--kafka-sasl-password`
* [ENHANCEMENT] `kafkatool`: add `dump print` command to print the content of \ 
write requests from a dump. #9942
* [ENHANCEMENT] Updated `KubePersistentVolumeFillingUp` runbook, including a \ 
sample command to debug the distroless image. #9802

Files:
RevisionActionfile
1.9modifypkgsrc/databases/mimir/Makefile
1.5modifypkgsrc/databases/mimir/distinfo
1.5modifypkgsrc/databases/mimir/go-modules.mk