From c18864fc0f958928969a3d4550aff05a33d6a5ef Mon Sep 17 00:00:00 2001 From: Jack Westbrook Date: Tue, 19 Nov 2024 10:58:01 +0100 Subject: [PATCH 1/7] fix(lezer-promql): add missing types export in package.json (#15397) Signed-off-by: Jack Westbrook --- web/ui/module/lezer-promql/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/web/ui/module/lezer-promql/package.json b/web/ui/module/lezer-promql/package.json index bc39014a1c..b7be02c82d 100644 --- a/web/ui/module/lezer-promql/package.json +++ b/web/ui/module/lezer-promql/package.json @@ -5,6 +5,7 @@ "main": "dist/index.cjs", "type": "module", "exports": { + "types": "./dist/index.d.ts", "import": "./dist/index.es.js", "require": "./dist/index.cjs" }, From 9987480e9daae5f0ca85106de46a107f64d53afa Mon Sep 17 00:00:00 2001 From: machine424 Date: Wed, 5 Mar 2025 15:22:29 +0100 Subject: [PATCH 2/7] chore: update prometheus/promci to v0.4.6 The used version had a no-longer-supported actions/upload-artifact version Which led to: Error: This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3`. Learn more: https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions/ as in https://github.com/prometheus/prometheus/actions/runs/13591433692/job/38242934626 Signed-off-by: machine424 --- .github/workflows/ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 978218dba2..c349284e56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: image: quay.io/prometheus/golang-builder:1.22-base steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/setup_environment - run: make GOOPTS=--tags=stringlabels GO_ONLY=1 SKIP_GOLANGCI_LINT=1 - run: go test --tags=stringlabels ./tsdb/ -test.tsdb-isolation=false @@ -28,7 +28,7 @@ jobs: image: quay.io/prometheus/golang-builder:1.22-base steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/setup_environment - run: go test --tags=dedupelabels ./... - run: GOARCH=386 go test ./cmd/prometheus @@ -58,7 +58,7 @@ jobs: steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/setup_environment with: enable_go: false @@ -115,7 +115,7 @@ jobs: thread: [ 0, 1, 2 ] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/build with: promu_opts: "-p linux/amd64 -p windows/amd64 -p linux/arm64 -p darwin/amd64 -p darwin/arm64 -p linux/386" @@ -138,7 +138,7 @@ jobs: # should also be updated. steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/build with: parallelism: 12 @@ -188,7 +188,7 @@ jobs: if: github.event_name == 'push' && github.event.ref == 'refs/heads/main' steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/publish_main with: docker_hub_login: ${{ secrets.docker_hub_login }} @@ -202,7 +202,7 @@ jobs: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v2.') steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - uses: ./.github/promci/actions/publish_release with: docker_hub_login: ${{ secrets.docker_hub_login }} @@ -217,7 +217,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: prometheus/promci@3cb0c3871f223bd5ce1226995bd52ffb314798b6 # v0.1.0 + - uses: prometheus/promci@c3c93a50d581b928af720f0134b2b2dad32a6c41 # v0.4.6 - name: Install nodejs uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2 with: From 7d29854c71af62f45082019a7d330fc36c766eda Mon Sep 17 00:00:00 2001 From: machine424 Date: Wed, 5 Mar 2025 15:40:20 +0100 Subject: [PATCH 3/7] chore: update actions/cache to v4.2.2 avoiding Error: This request has been automatically failed because it uses a deprecated version of `actions/cache: 0c45773b623bea8c8e75f6c82b208c3cf94ea4f9`. Please update your workflow to use v3/v4 of actions/cache to avoid interruptions. Learn more: https://github.blog/changelog/2024-12-05-notice-of-upcoming-releases-and-breaking-changes-for-github-actions/#actions-cache-v1-v2-and-actions-toolkit-cache-package-closing-down like in https://github.com/prometheus/prometheus/actions/runs/13678387950/job/38244352964?pr=16090 Signed-off-by: machine424 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c349284e56..dfb41b9152 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -223,7 +223,7 @@ jobs: with: node-version-file: "web/ui/.nvmrc" registry-url: "https://registry.npmjs.org" - - uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 + - uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} From e7ef1c0d9a0264e9b4119e5df68d135e1a988a3e Mon Sep 17 00:00:00 2001 From: Danial Eskandari <52372842+eskandaridanial@users.noreply.github.com> Date: Thu, 27 Feb 2025 13:55:52 +0330 Subject: [PATCH 4/7] config: set gogc default value when config body is empty (#16052) * fix: set gogc default value when config body is empty Signed-off-by: Danial Eskandari * refactor: explicitly check value 75 in `TestGoGCDefaultValueOnEmptyConfigBody` add GoGC assertion in `TestEmptyConfig`, also removed the no longer needed runtime config assignment in `TestEmptyGlobalBlock` Signed-off-by: Danial Eskandari * refactor: remove `TestGoGCDefaultValueOnEmptyConfigBody` to reduce duplicate assertions Signed-off-by: Danial Eskandari --------- Signed-off-by: Danial Eskandari Signed-off-by: machine424 --- config/config.go | 1 + config/config_test.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/config.go b/config/config.go index 9defa10d48..ecf4d06dd5 100644 --- a/config/config.go +++ b/config/config.go @@ -139,6 +139,7 @@ var ( // DefaultConfig is the default top-level configuration. DefaultConfig = Config{ GlobalConfig: DefaultGlobalConfig, + Runtime: DefaultRuntimeConfig, } // DefaultGlobalConfig is the default global configuration. diff --git a/config/config_test.go b/config/config_test.go index ff056a2676..e3f4751ed8 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -2035,6 +2035,7 @@ func TestEmptyConfig(t *testing.T) { require.NoError(t, err) exp := DefaultConfig require.Equal(t, exp, *c) + require.Equal(t, 75, c.Runtime.GoGC) } func TestExpandExternalLabels(t *testing.T) { @@ -2086,7 +2087,6 @@ func TestEmptyGlobalBlock(t *testing.T) { c, err := Load("global:\n", false, log.NewNopLogger()) require.NoError(t, err) exp := DefaultConfig - exp.Runtime = DefaultRuntimeConfig require.Equal(t, exp, *c) } From 63d1e56525e00d215d462368dff364d32225b0b9 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Fri, 23 Aug 2024 09:12:02 +0100 Subject: [PATCH 5/7] [TESTS] Scrape: make caching work in benchmark Returning 0 from Append means 'unknown', so the series is never cached. Return arbitrary numbers instead. Signed-off-by: Bryan Boreham --- scrape/helpers_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scrape/helpers_test.go b/scrape/helpers_test.go index 116fa5c94b..bf89841781 100644 --- a/scrape/helpers_test.go +++ b/scrape/helpers_test.go @@ -44,23 +44,23 @@ func (a nopAppendable) Appender(_ context.Context) storage.Appender { type nopAppender struct{} func (a nopAppender) Append(storage.SeriesRef, labels.Labels, int64, float64) (storage.SeriesRef, error) { - return 0, nil + return 1, nil } func (a nopAppender) AppendExemplar(storage.SeriesRef, labels.Labels, exemplar.Exemplar) (storage.SeriesRef, error) { - return 0, nil + return 2, nil } func (a nopAppender) AppendHistogram(storage.SeriesRef, labels.Labels, int64, *histogram.Histogram, *histogram.FloatHistogram) (storage.SeriesRef, error) { - return 0, nil + return 3, nil } func (a nopAppender) UpdateMetadata(storage.SeriesRef, labels.Labels, metadata.Metadata) (storage.SeriesRef, error) { - return 0, nil + return 4, nil } func (a nopAppender) AppendCTZeroSample(storage.SeriesRef, labels.Labels, int64, int64) (storage.SeriesRef, error) { - return 0, nil + return 5, nil } func (a nopAppender) Commit() error { return nil } From e86b9812f4547fcc4b5ec89fc913a3fb1e8860b9 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 5 Mar 2025 17:08:05 +0000 Subject: [PATCH 6/7] [BUGFIX] Scraping: bump cache iteration after error Backport of #16174 to LTS release-2.53 branch. We use the cache iteration number to detect when the same metric has occurred twice in a scrape. We need to bump this number at the end of every scrape, not just successful scrapes. The `iter` number is also used: * After a successful scrape, to delete older metrics and metadata. * To detect when metadata changed in this scrape. None of those additional cases is broken by incrementing the number on error. Signed-off-by: Bryan Boreham --- scrape/scrape.go | 4 ++-- scrape/scrape_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/scrape/scrape.go b/scrape/scrape.go index c546bf3800..a3c8146e8d 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -947,8 +947,6 @@ func (c *scrapeCache) iterDone(flushCache bool) { } } c.metaMtx.Unlock() - - c.iter++ } // Swap current and previous series. @@ -958,6 +956,8 @@ func (c *scrapeCache) iterDone(flushCache bool) { for k := range c.seriesCur { delete(c.seriesCur, k) } + + c.iter++ } func (c *scrapeCache) get(met []byte) (*cacheEntry, bool, bool) { diff --git a/scrape/scrape_test.go b/scrape/scrape_test.go index a379cc6450..4fb801c6a6 100644 --- a/scrape/scrape_test.go +++ b/scrape/scrape_test.go @@ -3784,3 +3784,40 @@ scrape_configs: require.Equal(t, expectedSchema, h.Schema) } } + +// Regression test against https://github.com/prometheus/prometheus/issues/16160. +// The first scrape fails with a parsing error, but the second should +// succeed and cause `metric_1=11` to appear in the appender. +func TestScrapeAppendWithParseError(t *testing.T) { + const ( + scrape1 = `metric_a 1 +` + scrape2 = `metric_a 11 +# EOF` + ) + + sl := newBasicScrapeLoop(t, context.Background(), nil, nil, 0) + sl.cache = newScrapeCache(sl.metrics) + + now := time.Now() + capp := &collectResultAppender{next: nopAppender{}} + _, _, _, err := sl.append(capp, []byte(scrape1), "application/openmetrics-text", now) + require.Error(t, err) + _, _, _, err = sl.append(capp, nil, "", now) + require.NoError(t, err) + require.Empty(t, capp.resultFloats) + + capp = &collectResultAppender{next: nopAppender{}} + _, _, _, err = sl.append(capp, []byte(scrape2), "application/openmetrics-text", now.Add(15*time.Second)) + require.NoError(t, err) + require.NoError(t, capp.Commit()) + + want := []floatSample{ + { + metric: labels.FromStrings(model.MetricNameLabel, "metric_a"), + t: timestamp.FromTime(now.Add(15 * time.Second)), + f: 11, + }, + } + requireEqual(t, want, capp.resultFloats, "Appended samples not as expected:\n%s", capp) +} From 71eab074ce787043523fa518c470b8a8d9db103a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gy=C3=B6rgy=20Krajcsovits?= Date: Mon, 17 Mar 2025 11:38:20 +0100 Subject: [PATCH 7/7] Prepare release 2.53.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: György Krajcsovits --- CHANGELOG.md | 5 +++++ VERSION | 2 +- web/ui/module/codemirror-promql/package.json | 4 ++-- web/ui/module/lezer-promql/package.json | 2 +- web/ui/package-lock.json | 14 +++++++------- web/ui/package.json | 2 +- web/ui/react-app/package.json | 4 ++-- 7 files changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6c951696d..4ddda15a21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2.53.4 / 2025-03-18 + +* [BUGFIX] Runtime: fix GOGC is being set to 0 when installed with empty prometheus.yml file resulting high cpu usage. #16090 +* [BUGFIX] Scrape: fix dropping valid metrics after previous scrape failed. #16220 + ## 2.53.3 / 2024-11-04 * [BUGFIX] Scraping: allow multiple samples on same series, with explicit timestamps. #14685, #14740 diff --git a/VERSION b/VERSION index 27b2061b61..75cc04805e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.53.3 +2.53.4 diff --git a/web/ui/module/codemirror-promql/package.json b/web/ui/module/codemirror-promql/package.json index 6b2d271102..acca17c8dc 100644 --- a/web/ui/module/codemirror-promql/package.json +++ b/web/ui/module/codemirror-promql/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/codemirror-promql", - "version": "0.53.3", + "version": "0.53.4", "description": "a CodeMirror mode for the PromQL language", "types": "dist/esm/index.d.ts", "module": "dist/esm/index.js", @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/prometheus/prometheus/blob/main/web/ui/module/codemirror-promql/README.md", "dependencies": { - "@prometheus-io/lezer-promql": "0.53.3", + "@prometheus-io/lezer-promql": "0.53.4", "lru-cache": "^7.18.3" }, "devDependencies": { diff --git a/web/ui/module/lezer-promql/package.json b/web/ui/module/lezer-promql/package.json index b7be02c82d..2062cd0997 100644 --- a/web/ui/module/lezer-promql/package.json +++ b/web/ui/module/lezer-promql/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/lezer-promql", - "version": "0.53.3", + "version": "0.53.4", "description": "lezer-based PromQL grammar", "main": "dist/index.cjs", "type": "module", diff --git a/web/ui/package-lock.json b/web/ui/package-lock.json index 85c30fc563..591315d4d0 100644 --- a/web/ui/package-lock.json +++ b/web/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "prometheus-io", - "version": "0.53.3", + "version": "0.53.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "prometheus-io", - "version": "0.53.3", + "version": "0.53.4", "workspaces": [ "react-app", "module/*" @@ -30,10 +30,10 @@ }, "module/codemirror-promql": { "name": "@prometheus-io/codemirror-promql", - "version": "0.53.3", + "version": "0.53.4", "license": "Apache-2.0", "dependencies": { - "@prometheus-io/lezer-promql": "0.53.3", + "@prometheus-io/lezer-promql": "0.53.4", "lru-cache": "^7.18.3" }, "devDependencies": { @@ -69,7 +69,7 @@ }, "module/lezer-promql": { "name": "@prometheus-io/lezer-promql", - "version": "0.53.3", + "version": "0.53.4", "license": "Apache-2.0", "devDependencies": { "@lezer/generator": "^1.5.1", @@ -19233,7 +19233,7 @@ }, "react-app": { "name": "@prometheus-io/app", - "version": "0.53.3", + "version": "0.53.4", "dependencies": { "@codemirror/autocomplete": "^6.11.1", "@codemirror/commands": "^6.3.2", @@ -19251,7 +19251,7 @@ "@lezer/lr": "^1.3.14", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "0.53.3", + "@prometheus-io/codemirror-promql": "0.53.4", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.6.2", diff --git a/web/ui/package.json b/web/ui/package.json index 5c1eabb11f..28244d774e 100644 --- a/web/ui/package.json +++ b/web/ui/package.json @@ -28,5 +28,5 @@ "ts-jest": "^29.1.1", "typescript": "^4.9.5" }, - "version": "0.53.3" + "version": "0.53.4" } diff --git a/web/ui/react-app/package.json b/web/ui/react-app/package.json index 41382f3fe8..25db961a4d 100644 --- a/web/ui/react-app/package.json +++ b/web/ui/react-app/package.json @@ -1,6 +1,6 @@ { "name": "@prometheus-io/app", - "version": "0.53.3", + "version": "0.53.4", "private": true, "dependencies": { "@codemirror/autocomplete": "^6.11.1", @@ -19,7 +19,7 @@ "@lezer/lr": "^1.3.14", "@nexucis/fuzzy": "^0.4.1", "@nexucis/kvsearch": "^0.8.1", - "@prometheus-io/codemirror-promql": "0.53.3", + "@prometheus-io/codemirror-promql": "0.53.4", "bootstrap": "^4.6.2", "css.escape": "^1.5.1", "downshift": "^7.6.2",