Skip to content

Commit 18e0485

Browse files
authored
Prepare release 2.15-rc.0 (#10206)
* Update VERSION * Update CHANGELOG * Cleanup deprecated features in preparation for 2.15 release (#10197) * Remove ingester shutdown via GET * Update CHANGELOG * Update RELEASE.md * Update golang.org/x/crypto version for CVE-2024-45337
1 parent de6d3fb commit 18e0485

33 files changed

+282
-73
lines changed

Diff for: CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## main / unreleased
3+
## 2.15.0-rc.0
44

55
### Grafana Mimir
66

@@ -22,6 +22,7 @@
2222
* [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
2323
* [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
2424
* [CHANGE] Querier: promql(native histograms): Introduce exponential interpolation. #9844
25+
* [CHANGE] Remove deprecated `api.get-request-for-ingester-shutdown-enabled` setting, which scheduled for removal in 2.15. #10197
2526
* [FEATURE] Querier: add experimental streaming PromQL engine, enabled with `-querier.query-engine=mimir`. #10067
2627
* [FEATURE] Distributor: Add support for `lz4` OTLP compression. #9763
2728
* [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

Diff for: RELEASE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The following table contains past releases and tentative dates for upcoming rele
2424
| 2.12.0 | 2024-03-11 | Yuri Nikolic |
2525
| 2.13.0 | 2024-06-17 | Dimitar Dimitrov |
2626
| 2.14.0 | 2024-10-07 | Vladimir Varankin |
27-
| 2.15.0 | 2024-12-09 | _To be announced_ |
27+
| 2.15.0 | 2024-12-12 | Casie Chen |
2828
| 2.16.0 | 2025-03-10 | _To be announced_ |
2929

3030
## Release shepherd responsibilities

Diff for: VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.14.1
1+
2.15.0-rc.0

Diff for: cmd/mimir/config-descriptor.json

-11
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,6 @@
9696
"fieldType": "boolean",
9797
"fieldCategory": "advanced"
9898
},
99-
{
100-
"kind": "field",
101-
"name": "get_request_for_ingester_shutdown_enabled",
102-
"required": false,
103-
"desc": "Enable GET requests to the /ingester/shutdown endpoint to trigger an ingester shutdown. This is a potentially dangerous operation and should only be enabled consciously.",
104-
"fieldValue": null,
105-
"fieldDefaultValue": false,
106-
"fieldFlag": "api.get-request-for-ingester-shutdown-enabled",
107-
"fieldType": "boolean",
108-
"fieldCategory": "deprecated"
109-
},
11099
{
111100
"kind": "field",
112101
"name": "alertmanager_http_prefix",

Diff for: cmd/mimir/help-all.txt.tmpl

-2
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,6 @@ Usage of ./cmd/mimir/mimir:
359359
[experimental] Enable UTF-8 strict mode. Allows UTF-8 characters in the matchers for routes and inhibition rules, in silences, and in the labels for alerts. It is recommended that all tenants run the `migrate-utf8` command in mimirtool before enabling this mode. Otherwise, some tenant configurations might fail to load. For more information, refer to [Enable UTF-8](https://grafana.com/docs/mimir/<MIMIR_VERSION>/references/architecture/components/alertmanager/#enable-utf-8). Enabling and then disabling UTF-8 strict mode can break existing Alertmanager configurations if tenants added UTF-8 characters to their Alertmanager configuration while it was enabled.
360360
-alertmanager.web.external-url string
361361
The URL under which Alertmanager is externally reachable (eg. could be different than -http.alertmanager-http-prefix in case Alertmanager is served via a reverse proxy). This setting is used both to configure the internal requests router and to generate links in alert templates. If the external URL has a path portion, it will be used to prefix all HTTP endpoints served by Alertmanager, both the UI and API. (default http://localhost:8080/alertmanager)
362-
-api.get-request-for-ingester-shutdown-enabled
363-
[deprecated] Enable GET requests to the /ingester/shutdown endpoint to trigger an ingester shutdown. This is a potentially dangerous operation and should only be enabled consciously.
364362
-api.skip-label-count-validation-header-enabled
365363
Allows to disable enforcement of the label count limit "max_label_names_per_series" via X-Mimir-SkipLabelCountValidation header on the http write path. Allowing this for external clients allows any client to send invalid label counts. After enabling it, requests with a specific HTTP header set to true will not have label counts validated.
366364
-api.skip-label-name-validation-header-enabled

Diff for: docs/sources/mimir/configure/configuration-parameters/index.md

-6
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,6 @@ api:
149149
# CLI flag: -api.skip-label-count-validation-header-enabled
150150
[skip_label_count_validation_header_enabled: <boolean> | default = false]
151151

152-
# (deprecated) Enable GET requests to the /ingester/shutdown endpoint to
153-
# trigger an ingester shutdown. This is a potentially dangerous operation and
154-
# should only be enabled consciously.
155-
# CLI flag: -api.get-request-for-ingester-shutdown-enabled
156-
[get_request_for_ingester_shutdown_enabled: <boolean> | default = false]
157-
158152
# (advanced) HTTP URL path under which the Alertmanager ui and api will be
159153
# served.
160154
# CLI flag: -http.alertmanager-http-prefix

Diff for: go.mod

+5-5
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ require (
4545
github.com/uber/jaeger-client-go v2.30.0+incompatible
4646
go.uber.org/atomic v1.11.0
4747
go.uber.org/goleak v1.3.0
48-
golang.org/x/crypto v0.29.0
48+
golang.org/x/crypto v0.31.0
4949
golang.org/x/net v0.31.0
50-
golang.org/x/sync v0.9.0
50+
golang.org/x/sync v0.10.0
5151
golang.org/x/time v0.8.0
5252
google.golang.org/grpc v1.67.1
5353
gopkg.in/yaml.v2 v2.4.0
@@ -89,7 +89,7 @@ require (
8989
go.opentelemetry.io/otel/trace v1.32.0
9090
go.uber.org/multierr v1.11.0
9191
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
92-
golang.org/x/term v0.26.0
92+
golang.org/x/term v0.27.0
9393
google.golang.org/api v0.209.0
9494
google.golang.org/protobuf v1.35.2
9595
sigs.k8s.io/kustomize/kyaml v0.18.1
@@ -273,8 +273,8 @@ require (
273273
go.uber.org/zap v1.21.0 // indirect
274274
golang.org/x/mod v0.22.0 // indirect
275275
golang.org/x/oauth2 v0.24.0 // indirect
276-
golang.org/x/sys v0.27.0 // indirect
277-
golang.org/x/text v0.20.0 // indirect
276+
golang.org/x/sys v0.28.0 // indirect
277+
golang.org/x/text v0.21.0 // indirect
278278
golang.org/x/tools v0.27.0 // indirect
279279
google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f // indirect
280280
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect

Diff for: go.sum

+10-10
Original file line numberDiff line numberDiff line change
@@ -1840,8 +1840,8 @@ golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1m
18401840
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
18411841
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
18421842
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
1843-
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
1844-
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
1843+
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
1844+
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
18451845
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
18461846
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
18471847
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -2030,8 +2030,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
20302030
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
20312031
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
20322032
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
2033-
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
2034-
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
2033+
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
2034+
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
20352035
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
20362036
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
20372037
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -2142,8 +2142,8 @@ golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
21422142
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
21432143
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
21442144
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
2145-
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
2146-
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
2145+
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
2146+
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
21472147
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
21482148
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
21492149
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -2160,8 +2160,8 @@ golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
21602160
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
21612161
golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58=
21622162
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
2163-
golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU=
2164-
golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E=
2163+
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
2164+
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
21652165
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
21662166
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
21672167
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -2181,8 +2181,8 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
21812181
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
21822182
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
21832183
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
2184-
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
2185-
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
2184+
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
2185+
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
21862186
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
21872187
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
21882188
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

Diff for: pkg/api/api.go

-7
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ type Config struct {
5151
SkipLabelNameValidationHeader bool `yaml:"skip_label_name_validation_header_enabled" category:"advanced"`
5252
SkipLabelCountValidationHeader bool `yaml:"skip_label_count_validation_header_enabled" category:"advanced"`
5353

54-
// TODO: Remove option in Mimir 2.15.
55-
GETRequestForIngesterShutdownEnabled bool `yaml:"get_request_for_ingester_shutdown_enabled" category:"deprecated"`
56-
5754
AlertmanagerHTTPPrefix string `yaml:"alertmanager_http_prefix" category:"advanced"`
5855
PrometheusHTTPPrefix string `yaml:"prometheus_http_prefix" category:"advanced"`
5956

@@ -72,7 +69,6 @@ type Config struct {
7269
func (cfg *Config) RegisterFlags(f *flag.FlagSet) {
7370
f.BoolVar(&cfg.SkipLabelNameValidationHeader, "api.skip-label-name-validation-header-enabled", false, "Allows to skip label name validation via X-Mimir-SkipLabelNameValidation header on the http write path. Use with caution as it breaks PromQL. Allowing this for external clients allows any client to send invalid label names. After enabling it, requests with a specific HTTP header set to true will not have label names validated.")
7471
f.BoolVar(&cfg.SkipLabelCountValidationHeader, "api.skip-label-count-validation-header-enabled", false, "Allows to disable enforcement of the label count limit \"max_label_names_per_series\" via X-Mimir-SkipLabelCountValidation header on the http write path. Allowing this for external clients allows any client to send invalid label counts. After enabling it, requests with a specific HTTP header set to true will not have label counts validated.")
75-
f.BoolVar(&cfg.GETRequestForIngesterShutdownEnabled, "api.get-request-for-ingester-shutdown-enabled", false, "Enable GET requests to the /ingester/shutdown endpoint to trigger an ingester shutdown. This is a potentially dangerous operation and should only be enabled consciously.")
7672
cfg.RegisterFlagsWithPrefix("", f)
7773
}
7874

@@ -314,9 +310,6 @@ func (a *API) RegisterIngester(i Ingester) {
314310
a.RegisterRoute("/ingester/prepare-instance-ring-downscale", http.HandlerFunc(i.PrepareInstanceRingDownscaleHandler), false, true, "GET", "POST", "DELETE")
315311
a.RegisterRoute("/ingester/unregister-on-shutdown", http.HandlerFunc(i.PrepareUnregisterHandler), false, false, "GET", "PUT", "DELETE")
316312
a.RegisterRoute("/ingester/shutdown", http.HandlerFunc(i.ShutdownHandler), false, true, "POST")
317-
if a.cfg.GETRequestForIngesterShutdownEnabled {
318-
a.RegisterDeprecatedRoute("/ingester/shutdown", http.HandlerFunc(i.ShutdownHandler), false, true, "GET")
319-
}
320313
a.RegisterRoute("/ingester/tsdb_metrics", http.HandlerFunc(i.UserRegistryHandler), true, true, "GET")
321314

322315
a.indexPage.AddLinks(defaultWeight, "Ingester", []IndexPageLink{

Diff for: pkg/api/api_test.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -201,24 +201,15 @@ func (mi MockIngester) ShutdownHandler(w http.ResponseWriter, _ *http.Request) {
201201
func TestApiIngesterShutdown(t *testing.T) {
202202
for _, tc := range []struct {
203203
name string
204-
setFlag bool
205204
expectedStatusCode int
206205
}{
207-
{
208-
name: "flag set to true, enable GET request for ingester shutdown",
209-
setFlag: true,
210-
expectedStatusCode: http.StatusNoContent,
211-
},
212206
{
213207
name: "flag not set (default), disable GET request for ingester shutdown",
214-
setFlag: false,
215208
expectedStatusCode: http.StatusMethodNotAllowed,
216209
},
217210
} {
218211
t.Run(tc.name, func(t *testing.T) {
219-
cfg := Config{
220-
GETRequestForIngesterShutdownEnabled: tc.setFlag,
221-
}
212+
cfg := Config{}
222213
serverCfg := getServerConfig(t)
223214
federationCfg := tenantfederation.Config{}
224215
srv, err := server.New(serverCfg)

Diff for: vendor/golang.org/x/sys/unix/zerrors_linux.go

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/golang.org/x/sys/unix/zerrors_linux_386.go

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)