From d9bbe7f3dd1f0fb4085470197075e05f21c75929 Mon Sep 17 00:00:00 2001 From: Ben Ye Date: Sat, 4 Dec 2021 12:13:24 -0800 Subject: [PATCH 1/9] mention agent mode in enable-feature flag help description (#9939) Signed-off-by: Ben Ye --- cmd/prometheus/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/prometheus/main.go b/cmd/prometheus/main.go index a1636fc9c7..14c738d672 100644 --- a/cmd/prometheus/main.go +++ b/cmd/prometheus/main.go @@ -381,7 +381,7 @@ func main() { serverOnlyFlag(a, "query.max-samples", "Maximum number of samples a single query can load into memory. Note that queries will fail if they try to load more samples than this into memory, so this also limits the number of samples a query can return."). Default("50000000").IntVar(&cfg.queryMaxSamples) - a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, remote-write-receiver, extra-scrape-metrics, new-service-discovery-manager. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details."). + a.Flag("enable-feature", "Comma separated feature names to enable. Valid options: agent, exemplar-storage, expand-external-labels, memory-snapshot-on-shutdown, promql-at-modifier, promql-negative-offset, remote-write-receiver, extra-scrape-metrics, new-service-discovery-manager. See https://prometheus.io/docs/prometheus/latest/feature_flags/ for more details."). Default("").StringsVar(&cfg.featureList) promlogflag.AddFlags(a, &cfg.promlogConfig) From 6df47766b2405c7fca5037e800b50ee4c10b0b66 Mon Sep 17 00:00:00 2001 From: Robbie Lankford Date: Sun, 5 Dec 2021 03:07:03 -0600 Subject: [PATCH 2/9] disable fetching alertmanagers on status page in agent mode Signed-off-by: Robbie Lankford --- web/ui/react-app/src/App.tsx | 2 +- web/ui/react-app/src/pages/status/Status.tsx | 39 ++++++++++++-------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/web/ui/react-app/src/App.tsx b/web/ui/react-app/src/App.tsx index 8c96a3f73b..7ba77d8f05 100755 --- a/web/ui/react-app/src/App.tsx +++ b/web/ui/react-app/src/App.tsx @@ -103,7 +103,7 @@ const App: FC = ({ consolesLink, agentMode }) => { - + diff --git a/web/ui/react-app/src/pages/status/Status.tsx b/web/ui/react-app/src/pages/status/Status.tsx index 20d2e9e99c..faeb6d25ae 100644 --- a/web/ui/react-app/src/pages/status/Status.tsx +++ b/web/ui/react-app/src/pages/status/Status.tsx @@ -83,28 +83,35 @@ const StatusWithStatusIndicator = withStatusIndicator(StatusContent); StatusContent.displayName = 'Status'; -const Status: FC = () => { +const StatusResult: FC<{ fetchPath: string; title: string; agentMode: boolean }> = ({ fetchPath, title, agentMode }) => { + const { response, isLoading, error } = useFetch(fetchPath); + return ( + + ); +}; + +const Status: FC<{ agentMode: boolean }> = ({ agentMode }) => { const pathPrefix = usePathPrefix(); const path = `${pathPrefix}/${API_PATH}`; return ( <> {[ - { fetchResult: useFetch>(`${path}/status/runtimeinfo`), title: 'Runtime Information' }, - { fetchResult: useFetch>(`${path}/status/buildinfo`), title: 'Build Information' }, - { fetchResult: useFetch>(`${path}/alertmanagers`), title: 'Alertmanagers' }, - ].map(({ fetchResult, title }) => { - const { response, isLoading, error } = fetchResult; - return ( - - ); + { fetchPath: `${path}/status/runtimeinfo`, title: 'Runtime Information' }, + { fetchPath: `${path}/status/buildinfo`, title: 'Build Information' }, + { fetchPath: `${path}/alertmanagers`, title: 'Alertmanagers' }, + ].map(({ fetchPath, title }) => { + if (agentMode && title === 'Alertmanagers') { + return null; + } + return ; })} ); From 5fb63c1071240f7e79e0c1f89661a8697679e443 Mon Sep 17 00:00:00 2001 From: Robbie Lankford Date: Sun, 5 Dec 2021 03:14:20 -0600 Subject: [PATCH 3/9] remove unused agentMode param Signed-off-by: Robbie Lankford --- web/ui/react-app/src/pages/status/Status.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/ui/react-app/src/pages/status/Status.tsx b/web/ui/react-app/src/pages/status/Status.tsx index faeb6d25ae..0d37db9619 100644 --- a/web/ui/react-app/src/pages/status/Status.tsx +++ b/web/ui/react-app/src/pages/status/Status.tsx @@ -83,7 +83,7 @@ const StatusWithStatusIndicator = withStatusIndicator(StatusContent); StatusContent.displayName = 'Status'; -const StatusResult: FC<{ fetchPath: string; title: string; agentMode: boolean }> = ({ fetchPath, title, agentMode }) => { +const StatusResult: FC<{ fetchPath: string; title: string }> = ({ fetchPath, title }) => { const { response, isLoading, error } = useFetch(fetchPath); return ( = ({ agentMode }) => { if (agentMode && title === 'Alertmanagers') { return null; } - return ; + return ; })} ); From 47ee242cb4f946572342afe595723cda6fe23d15 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Sun, 5 Dec 2021 10:49:11 +0100 Subject: [PATCH 4/9] Improve message wording on /agent page The "them" currently sounds like it refers to the targets, which is not correct. Signed-off-by: Julius Volz --- web/ui/react-app/src/pages/agent/Agent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/ui/react-app/src/pages/agent/Agent.tsx b/web/ui/react-app/src/pages/agent/Agent.tsx index 2590a0a354..140cfe43a8 100644 --- a/web/ui/react-app/src/pages/agent/Agent.tsx +++ b/web/ui/react-app/src/pages/agent/Agent.tsx @@ -6,7 +6,7 @@ const Agent: FC = () => {

Prometheus Agent

This Prometheus instance is running in agent mode. In this mode, Prometheus is only used to scrape - discovered targets and forward them to remote write endpoints. + discovered targets and forward the scraped metrics to remote write endpoints.

Some features are not available in this mode, such as querying and alerting.

From 412b6a0591a1fd5feb5c3751edb4ed1e64248ac9 Mon Sep 17 00:00:00 2001 From: Witek Bedyk Date: Sat, 4 Dec 2021 21:14:47 +0100 Subject: [PATCH 5/9] Fix Uyuni SD initialization (#9924) * Fix Uyuni SD initialization The change prevents null pointer exception during SD initialization. Signed-off-by: Witek Bedyk --- config/config_test.go | 7 ++- config/testdata/uyuni_no_server.bad.yml | 4 ++ discovery/uyuni/uyuni.go | 12 ++--- discovery/uyuni/uyuni_test.go | 58 +++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 config/testdata/uyuni_no_server.bad.yml create mode 100644 discovery/uyuni/uyuni_test.go diff --git a/config/config_test.go b/config/config_test.go index e8d52d4aae..695c0188a5 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -227,7 +227,6 @@ var expectedConf = &Config{ }, }, { - JobName: "service-x", HonorTimestamps: true, @@ -954,7 +953,7 @@ var expectedConf = &Config{ Scheme: DefaultScrapeConfig.Scheme, ServiceDiscoveryConfigs: discovery.Configs{ &uyuni.SDConfig{ - Server: kubernetesSDHostURL(), + Server: "https://localhost:1234", Username: "gopher", Password: "hole", Entitlement: "monitoring_entitled", @@ -1434,6 +1433,10 @@ var expectedErrors = []struct { filename: "empty_scrape_config_action.bad.yml", errMsg: "relabel action cannot be empty", }, + { + filename: "uyuni_no_server.bad.yml", + errMsg: "Uyuni SD configuration requires server host", + }, } func TestBadConfigs(t *testing.T) { diff --git a/config/testdata/uyuni_no_server.bad.yml b/config/testdata/uyuni_no_server.bad.yml new file mode 100644 index 0000000000..4576be88d9 --- /dev/null +++ b/config/testdata/uyuni_no_server.bad.yml @@ -0,0 +1,4 @@ +scrape_configs: + - job_name: uyuni + uyuni_sd_configs: + - server: diff --git a/discovery/uyuni/uyuni.go b/discovery/uyuni/uyuni.go index df8efeeaf2..c48cf2e6c7 100644 --- a/discovery/uyuni/uyuni.go +++ b/discovery/uyuni/uyuni.go @@ -62,7 +62,7 @@ func init() { // SDConfig is the configuration for Uyuni based service discovery. type SDConfig struct { - Server config.URL `yaml:"server"` + Server string `yaml:"server"` Username string `yaml:"username"` Password config.Secret `yaml:"password"` HTTPClientConfig config.HTTPClientConfig `yaml:",inline"` @@ -122,11 +122,11 @@ func (c *SDConfig) UnmarshalYAML(unmarshal func(interface{}) error) error { if err != nil { return err } - if c.Server.URL == nil { + if c.Server == "" { return errors.New("Uyuni SD configuration requires server host") } - _, err = url.Parse(c.Server.String()) + _, err = url.Parse(c.Server) if err != nil { return errors.Wrap(err, "Uyuni Server URL is not valid") } @@ -199,8 +199,10 @@ func getEndpointInfoForSystems( // NewDiscovery returns a uyuni discovery for the given configuration. func NewDiscovery(conf *SDConfig, logger log.Logger) (*Discovery, error) { - var apiURL *url.URL - *apiURL = *conf.Server.URL + apiURL, err := url.Parse(conf.Server) + if err != nil { + return nil, err + } apiURL.Path = path.Join(apiURL.Path, uyuniXMLRPCAPIPath) rt, err := config.NewRoundTripperFromConfig(conf.HTTPClientConfig, "uyuni_sd") diff --git a/discovery/uyuni/uyuni_test.go b/discovery/uyuni/uyuni_test.go new file mode 100644 index 0000000000..9178c986b7 --- /dev/null +++ b/discovery/uyuni/uyuni_test.go @@ -0,0 +1,58 @@ +// Copyright 2020 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package uyuni + +import ( + "context" + "io" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/prometheus/prometheus/discovery/targetgroup" +) + +func testUpdateServices(respHandler http.HandlerFunc) ([]*targetgroup.Group, error) { + // Create a test server with mock HTTP handler. + ts := httptest.NewServer(respHandler) + defer ts.Close() + + conf := SDConfig{ + Server: ts.URL, + } + + md, err := NewDiscovery(&conf, nil) + if err != nil { + return nil, err + } + + return md.refresh(context.Background()) +} + +func TestUyuniSDHandleError(t *testing.T) { + var ( + errTesting = "unable to login to Uyuni API: request error: bad status code - 500" + respHandler = func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusInternalServerError) + w.Header().Set("Content-Type", "application/xml") + io.WriteString(w, ``) + } + ) + tgs, err := testUpdateServices(respHandler) + + require.EqualError(t, err, errTesting) + require.Equal(t, len(tgs), 0) +} From 7040ae3db1adfbc92affd8e8eff2d9ac28432768 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Tue, 7 Dec 2021 17:06:44 +0100 Subject: [PATCH 6/9] Cut v2.32.0-rc.1 Signed-off-by: Julius Volz --- CHANGELOG.md | 6 ++++++ VERSION | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ca38be77c..545bf0f1ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 2.32.0-rc.1 / 2021-12-07 + +* [ENHANCEMENT] Web: Improve message wording on /agent page. #9943 +* [BUGFIX] Web: Don't try to fetch and display Alertmanager stats on /status page in Agent mode. #9941 +* [BUGFIX] Flags: Mention Agent mode in `--enable-feature` flag help description. (#9939) + ## 2.32.0-rc.0 / 2021-12-01 This list of changes is relative to [v2.32.0-beta.0](https://github.com/prometheus/prometheus/releases/tag/v2.32.0-beta.0), which was a special 2.32 beta release to pre-publish the Prometheus Agent features. diff --git a/VERSION b/VERSION index 0a68d0694f..b2f90de991 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.32.0-rc.0 +2.32.0-rc.1 From 227d155e3f7455186c10c8ff00d1647e941d6513 Mon Sep 17 00:00:00 2001 From: Ganesh Vernekar <15064823+codesome@users.noreply.github.com> Date: Wed, 8 Dec 2021 21:02:14 +0530 Subject: [PATCH 7/9] Fix queries after a failed snapshot replay (#9980) Signed-off-by: Ganesh Vernekar --- tsdb/head.go | 4 +- tsdb/head_test.go | 104 ++++++++++++++++++++++++++++++++++++++++++++++ tsdb/head_wal.go | 3 +- 3 files changed, 109 insertions(+), 2 deletions(-) diff --git a/tsdb/head.go b/tsdb/head.go index dff2b0c675..0722d10ba7 100644 --- a/tsdb/head.go +++ b/tsdb/head.go @@ -473,7 +473,9 @@ const cardinalityCacheExpirationTime = time.Duration(30) * time.Second // limits the ingested samples to the head min valid time. func (h *Head) Init(minValidTime int64) error { h.minValidTime.Store(minValidTime) - defer h.postings.EnsureOrder() + defer func() { + h.postings.EnsureOrder() + }() defer h.gc() // After loading the wal remove the obsolete data from the head. defer func() { // Loading of m-mapped chunks and snapshot can make the mint of the Head diff --git a/tsdb/head_test.go b/tsdb/head_test.go index f9030f5ea0..d5f6f63732 100644 --- a/tsdb/head_test.go +++ b/tsdb/head_test.go @@ -2847,3 +2847,107 @@ func TestSnapshotError(t *testing.T) { require.NoError(t, err) require.Equal(t, 0, len(tm)) } + +// Tests https://github.com/prometheus/prometheus/issues/9725. +func TestChunkSnapshotReplayBug(t *testing.T) { + dir := t.TempDir() + wlog, err := wal.NewSize(nil, nil, filepath.Join(dir, "wal"), 32768, true) + require.NoError(t, err) + + // Write few series records and samples such that the series references are not in order in the WAL + // for status_code="200". + var buf []byte + for i := 1; i <= 1000; i++ { + var ref chunks.HeadSeriesRef + if i <= 500 { + ref = chunks.HeadSeriesRef(i * 100) + } else { + ref = chunks.HeadSeriesRef((i - 500) * 50) + } + seriesRec := record.RefSeries{ + Ref: ref, + Labels: labels.Labels{ + {Name: "__name__", Value: "request_duration"}, + {Name: "status_code", Value: "200"}, + {Name: "foo", Value: fmt.Sprintf("baz%d", rand.Int())}, + }, + } + // Add a sample so that the series is not garbage collected. + samplesRec := record.RefSample{Ref: ref, T: 1000, V: 1000} + var enc record.Encoder + + rec := enc.Series([]record.RefSeries{seriesRec}, buf) + buf = rec[:0] + require.NoError(t, wlog.Log(rec)) + rec = enc.Samples([]record.RefSample{samplesRec}, buf) + buf = rec[:0] + require.NoError(t, wlog.Log(rec)) + } + + // Write a corrupt snapshot to fail the replay on startup. + snapshotName := chunkSnapshotDir(0, 100) + cpdir := filepath.Join(dir, snapshotName) + require.NoError(t, os.MkdirAll(cpdir, 0o777)) + + err = ioutil.WriteFile(filepath.Join(cpdir, "00000000"), []byte{1, 5, 3, 5, 6, 7, 4, 2, 2}, 0o777) + require.NoError(t, err) + + opts := DefaultHeadOptions() + opts.ChunkDirRoot = dir + opts.EnableMemorySnapshotOnShutdown = true + head, err := NewHead(nil, nil, wlog, opts, nil) + require.NoError(t, err) + require.NoError(t, head.Init(math.MinInt64)) + defer func() { + require.NoError(t, head.Close()) + }() + + // Snapshot replay should error out. + require.Equal(t, 1.0, prom_testutil.ToFloat64(head.metrics.snapshotReplayErrorTotal)) + + // Querying `request_duration{status_code!="200"}` should return no series since all of + // them have status_code="200". + q, err := NewBlockQuerier(head, math.MinInt64, math.MaxInt64) + require.NoError(t, err) + series := query(t, q, + labels.MustNewMatcher(labels.MatchEqual, "__name__", "request_duration"), + labels.MustNewMatcher(labels.MatchNotEqual, "status_code", "200"), + ) + require.Len(t, series, 0, "there should be no series found") +} + +func TestChunkSnapshotTakenAfterIncompleteSnapshot(t *testing.T) { + dir := t.TempDir() + wlog, err := wal.NewSize(nil, nil, filepath.Join(dir, "wal"), 32768, true) + require.NoError(t, err) + + // Write a snapshot with .tmp suffix. This used to fail taking any further snapshots or replay of snapshots. + snapshotName := chunkSnapshotDir(0, 100) + ".tmp" + cpdir := filepath.Join(dir, snapshotName) + require.NoError(t, os.MkdirAll(cpdir, 0o777)) + + opts := DefaultHeadOptions() + opts.ChunkDirRoot = dir + opts.EnableMemorySnapshotOnShutdown = true + head, err := NewHead(nil, nil, wlog, opts, nil) + require.NoError(t, err) + require.NoError(t, head.Init(math.MinInt64)) + + require.Equal(t, 0.0, prom_testutil.ToFloat64(head.metrics.snapshotReplayErrorTotal)) + + // Add some samples for the snapshot. + app := head.Appender(context.Background()) + _, err = app.Append(0, labels.Labels{{Name: "foo", Value: "bar"}}, 10, 10) + require.NoError(t, err) + require.NoError(t, app.Commit()) + + // Should not return any error for a successful snapshot. + require.NoError(t, head.Close()) + + // Verify the snapshot. + name, idx, offset, err := LastChunkSnapshot(dir) + require.NoError(t, err) + require.True(t, name != "") + require.Equal(t, 0, idx) + require.Greater(t, offset, 0) +} diff --git a/tsdb/head_wal.go b/tsdb/head_wal.go index 8191284932..d0fe685ffb 100644 --- a/tsdb/head_wal.go +++ b/tsdb/head_wal.go @@ -777,7 +777,8 @@ func LastChunkSnapshot(dir string) (string, int, int, error) { splits := strings.Split(fi.Name()[len(chunkSnapshotPrefix):], ".") if len(splits) != 2 { - return "", 0, 0, errors.Errorf("chunk snapshot %s is not in the right format", fi.Name()) + // Chunk snapshots is not in the right format, we do not care about it. + continue } idx, err := strconv.Atoi(splits[0]) From 89263292a90c0d42e1e6f75f099c8ac63bc0a2c7 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Thu, 9 Dec 2021 10:37:32 +0100 Subject: [PATCH 8/9] Cut v2.32.0 Signed-off-by: Julius Volz --- CHANGELOG.md | 31 ++++++++++--------------------- VERSION | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 545bf0f1ba..9e377cc17d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,24 +1,6 @@ -## 2.32.0-rc.1 / 2021-12-07 +## 2.32.0 / 2021-12-09 -* [ENHANCEMENT] Web: Improve message wording on /agent page. #9943 -* [BUGFIX] Web: Don't try to fetch and display Alertmanager stats on /status page in Agent mode. #9941 -* [BUGFIX] Flags: Mention Agent mode in `--enable-feature` flag help description. (#9939) - -## 2.32.0-rc.0 / 2021-12-01 - -This list of changes is relative to [v2.32.0-beta.0](https://github.com/prometheus/prometheus/releases/tag/v2.32.0-beta.0), which was a special 2.32 beta release to pre-publish the Prometheus Agent features. - -* [FEATURE] TSDB: Add support for forwarding exemplars in Agent mode. #9664 -* [FEATURE] UI: Adapt web UI for Prometheus Agent mode. #9851 -* [ENHANCEMENT] Linode SD: Tune API request page sizes. #9779 -* [BUGFIX] TSDB: Fix panic when checkpoint directory is empty. #9687 -* [BUGFIX] TSDB: Fix panic, out of order chunks, and race warning during WAL replay. #9856 -* [BUGFIX] UI: Correctly render links for targets with IPv6 addresses that contain a Zone ID. #9853 -* [BUGFIX] Promtool: Fix checking of `authorization.credentials_file` and `bearer_token_file` fields. #9883 - -## 2.32.0-beta.0 / 2021-11-16 - -This beta release introduces the Prometheus Agent, a new mode of operation for +This release introduces the Prometheus Agent, a new mode of operation for Prometheus optimized for remote-write only scenarios. In this mode, Prometheus does not generate blocks on the local filesystem and is not queryable locally. Enable with `--enable-feature=agent`. @@ -26,7 +8,7 @@ Enable with `--enable-feature=agent`. Learn more about the Prometheus Agent in our [blog post](https://prometheus.io/blog/2021/11/16/agent/). * [CHANGE] remote-write: Change default max retry time from 100ms to 5 seconds. #9634 -* [FEATURE] Agent: New mode of operation optimized for remote-write only scenarios, without local storage. Enable with `--enable-feature=agent`. #8785 +* [FEATURE] Agent: New mode of operation optimized for remote-write only scenarios, without local storage. Enable with `--enable-feature=agent`. #8785 #9851 #9664 #9939 #9941 #9943 * [FEATURE] Promtool: Add `promtool check service-discovery` command. #8970 * [FEATURE] UI: Add search in metrics dropdown. #9629 * [FEATURE] Templates: Add parseDuration to template functions. #8817 @@ -38,8 +20,15 @@ Learn more about the Prometheus Agent in our [blog post](https://prometheus.io/b * [ENHANCEMENT] TSDB: Optimize query by skipping unneeded sorting in TSDB. #9673 * [ENHANCEMENT] Templates: Support int and uint as datatypes for template formatting. #9680 * [ENHANCEMENT] UI: Prefer `rate` over `rad`, `delta` over `deg`, and `count` over `cos` in autocomplete. #9688 +* [ENHANCEMENT] Linode SD: Tune API request page sizes. #9779 * [BUGFIX] TSDB: Add more size checks when writing individual sections in the index. #9710 * [BUGFIX] PromQL: Make `deriv()` return zero values for constant series. #9728 +* [BUGFIX] TSDB: Fix panic when checkpoint directory is empty. #9687 +* [BUGFIX] TSDB: Fix panic, out of order chunks, and race warning during WAL replay. #9856 +* [BUGFIX] UI: Correctly render links for targets with IPv6 addresses that contain a Zone ID. #9853 +* [BUGFIX] Promtool: Fix checking of `authorization.credentials_file` and `bearer_token_file` fields. #9883 +* [BUGFIX] Uyuni SD: Fix null pointer exception during initialization. #9924 #9950 +* [BUGFIX] TSDB: Fix queries after a failed snapshot replay. #9980 ## 2.31.1 / 2021-11-05 diff --git a/VERSION b/VERSION index b2f90de991..7cca401c7f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.32.0-rc.1 +2.32.0 From 06c0483045b4da560b5997918e2c8e2fa2ae54a4 Mon Sep 17 00:00:00 2001 From: Julien Pivotto Date: Tue, 14 Dec 2021 14:41:50 +0100 Subject: [PATCH 9/9] Update circleci orb Signed-off-by: Julien Pivotto --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5584864062..244ab8ea66 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2.1 orbs: - prometheus: prometheus/prometheus@0.14.0 + prometheus: prometheus/prometheus@0.15.0 go: circleci/go@1.7.0 win: circleci/windows@2.3.0