From 1725f906193e4af3afe327508587bc9e708ebad6 Mon Sep 17 00:00:00 2001 From: alanprot Date: Tue, 2 Apr 2024 09:38:15 -0700 Subject: [PATCH] fix breaking changes Signed-off-by: alanprot --- cmd/cortex/main.go | 3 +- pkg/alertmanager/alertmanager.go | 3 +- pkg/alertmanager/multitenant.go | 3 +- pkg/api/handlers.go | 3 +- pkg/cortex/cortex.go | 4 +- pkg/cortex/modules.go | 3 +- pkg/querier/blocks_store_queryable_test.go | 3 +- pkg/querier/chunk_store_queryable_test.go | 3 +- pkg/querier/error_translate_queryable_test.go | 2 +- pkg/querier/querier.go | 5 +- pkg/querier/querier_test.go | 9 ++-- pkg/ruler/compat.go | 5 +- .../prometheus/collectors/version/version.go | 47 +++++++++++++++++++ vendor/modules.txt | 1 + 14 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 vendor/github.com/prometheus/client_golang/prometheus/collectors/version/version.go diff --git a/cmd/cortex/main.go b/cmd/cortex/main.go index ad0ff0fa087..a5742d0f2ed 100644 --- a/cmd/cortex/main.go +++ b/cmd/cortex/main.go @@ -16,6 +16,7 @@ import ( "github.com/go-kit/log/level" "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" + collectorversion "github.com/prometheus/client_golang/prometheus/collectors/version" "github.com/prometheus/common/version" "gopkg.in/yaml.v2" @@ -46,7 +47,7 @@ func init() { version.Version = Version version.Branch = Branch version.Revision = Revision - prometheus.MustRegister(version.NewCollector("cortex")) + prometheus.MustRegister(collectorversion.NewCollector("cortex")) prometheus.MustRegister(configHash) } diff --git a/pkg/alertmanager/alertmanager.go b/pkg/alertmanager/alertmanager.go index 971fe3a20ae..9d6725bddab 100644 --- a/pkg/alertmanager/alertmanager.go +++ b/pkg/alertmanager/alertmanager.go @@ -5,7 +5,7 @@ import ( "crypto/md5" "encoding/binary" "fmt" - "github.com/prometheus/alertmanager/featurecontrol" + "net/http" "net/url" "path" @@ -22,6 +22,7 @@ import ( "github.com/prometheus/alertmanager/cluster/clusterpb" "github.com/prometheus/alertmanager/config" "github.com/prometheus/alertmanager/dispatch" + "github.com/prometheus/alertmanager/featurecontrol" "github.com/prometheus/alertmanager/inhibit" "github.com/prometheus/alertmanager/nflog" "github.com/prometheus/alertmanager/notify" diff --git a/pkg/alertmanager/multitenant.go b/pkg/alertmanager/multitenant.go index 5cce933dd6d..15714ec0466 100644 --- a/pkg/alertmanager/multitenant.go +++ b/pkg/alertmanager/multitenant.go @@ -4,7 +4,7 @@ import ( "context" "flag" "fmt" - "github.com/prometheus/alertmanager/featurecontrol" + "net/http" "net/url" "os" @@ -19,6 +19,7 @@ import ( "github.com/prometheus/alertmanager/cluster" "github.com/prometheus/alertmanager/cluster/clusterpb" amconfig "github.com/prometheus/alertmanager/config" + "github.com/prometheus/alertmanager/featurecontrol" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" tsdb_errors "github.com/prometheus/prometheus/tsdb/errors" diff --git a/pkg/api/handlers.go b/pkg/api/handlers.go index a1b1afc200f..17bd42d7c44 100644 --- a/pkg/api/handlers.go +++ b/pkg/api/handlers.go @@ -19,6 +19,7 @@ import ( "github.com/prometheus/common/route" "github.com/prometheus/common/version" "github.com/prometheus/prometheus/config" + "github.com/prometheus/prometheus/promql" "github.com/prometheus/prometheus/storage" v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/weaveworks/common/instrument" @@ -159,7 +160,7 @@ func NewQuerierHandler( cfg Config, queryable storage.SampleAndChunkQueryable, exemplarQueryable storage.ExemplarQueryable, - engine v1.QueryEngine, + engine promql.QueryEngine, distributor Distributor, reg prometheus.Registerer, logger log.Logger, diff --git a/pkg/cortex/cortex.go b/pkg/cortex/cortex.go index 279bfcaece6..4abccc647f2 100644 --- a/pkg/cortex/cortex.go +++ b/pkg/cortex/cortex.go @@ -5,6 +5,7 @@ import ( "context" "flag" "fmt" + "github.com/prometheus/prometheus/promql" "net/http" "os" "reflect" @@ -15,7 +16,6 @@ import ( "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" prom_storage "github.com/prometheus/prometheus/storage" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/weaveworks/common/server" "github.com/weaveworks/common/signals" "google.golang.org/grpc/health/grpc_health_v1" @@ -303,7 +303,7 @@ type Cortex struct { RuntimeConfig *runtimeconfig.Manager QuerierQueryable prom_storage.SampleAndChunkQueryable ExemplarQueryable prom_storage.ExemplarQueryable - QuerierEngine v1.QueryEngine + QuerierEngine promql.QueryEngine QueryFrontendTripperware tripperware.Tripperware Ruler *ruler.Ruler diff --git a/pkg/cortex/modules.go b/pkg/cortex/modules.go index 3b396463108..8b10594f400 100644 --- a/pkg/cortex/modules.go +++ b/pkg/cortex/modules.go @@ -15,7 +15,6 @@ import ( "github.com/prometheus/prometheus/promql" "github.com/prometheus/prometheus/rules" prom_storage "github.com/prometheus/prometheus/storage" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/thanos-io/objstore" "github.com/thanos-io/promql-engine/engine" "github.com/thanos-io/promql-engine/logicalplan" @@ -556,7 +555,7 @@ func (t *Cortex) initRuler() (serv services.Service, err error) { if t.Cfg.ExternalPusher != nil && t.Cfg.ExternalQueryable != nil { rulerRegisterer := prometheus.WrapRegistererWith(prometheus.Labels{"engine": "ruler"}, prometheus.DefaultRegisterer) - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine opts := promql.EngineOpts{ Logger: util_log.Logger, Reg: rulerRegisterer, diff --git a/pkg/querier/blocks_store_queryable_test.go b/pkg/querier/blocks_store_queryable_test.go index f624644866a..0ad8f3996ed 100644 --- a/pkg/querier/blocks_store_queryable_test.go +++ b/pkg/querier/blocks_store_queryable_test.go @@ -19,7 +19,6 @@ import ( "github.com/prometheus/prometheus/promql" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/tsdb/chunkenc" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -1512,7 +1511,7 @@ func TestBlocksStoreQuerier_PromQLExecution(t *testing.T) { } for _, thanosEngine := range []bool{false, true} { t.Run(fmt.Sprintf("thanos engine enabled=%t", thanosEngine), func(t *testing.T) { - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine if thanosEngine { queryEngine = engine.New(engine.Opts{ EngineOpts: opts, diff --git a/pkg/querier/chunk_store_queryable_test.go b/pkg/querier/chunk_store_queryable_test.go index e9c361323c9..5b3b7d9e4e2 100644 --- a/pkg/querier/chunk_store_queryable_test.go +++ b/pkg/querier/chunk_store_queryable_test.go @@ -11,7 +11,6 @@ import ( "github.com/prometheus/common/model" "github.com/prometheus/prometheus/model/labels" "github.com/prometheus/prometheus/promql" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/stretchr/testify/require" "github.com/thanos-io/promql-engine/engine" "github.com/thanos-io/promql-engine/logicalplan" @@ -35,7 +34,7 @@ func TestChunkQueryable(t *testing.T) { for _, encoding := range encodings { for _, query := range queries { t.Run(fmt.Sprintf("%s/%s/%s/ thanos engine enabled = %t", testcase.name, encoding.name, query.query, thanosEngine), func(t *testing.T) { - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine if thanosEngine { queryEngine = engine.New(engine.Opts{ EngineOpts: opts, diff --git a/pkg/querier/error_translate_queryable_test.go b/pkg/querier/error_translate_queryable_test.go index 43c560d4c11..e62cad6bb5f 100644 --- a/pkg/querier/error_translate_queryable_test.go +++ b/pkg/querier/error_translate_queryable_test.go @@ -136,7 +136,7 @@ func TestApiStatusCodes(t *testing.T) { } } -func createPrometheusAPI(q storage.SampleAndChunkQueryable, engine v1.QueryEngine) *route.Router { +func createPrometheusAPI(q storage.SampleAndChunkQueryable, engine promql.QueryEngine) *route.Router { api := v1.NewAPI( engine, q, diff --git a/pkg/querier/querier.go b/pkg/querier/querier.go index 5938b976e6d..1f249126917 100644 --- a/pkg/querier/querier.go +++ b/pkg/querier/querier.go @@ -18,7 +18,6 @@ import ( "github.com/prometheus/prometheus/promql" "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/util/annotations" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/thanos-io/promql-engine/engine" "github.com/thanos-io/promql-engine/logicalplan" "github.com/thanos-io/thanos/pkg/strutil" @@ -162,7 +161,7 @@ func getChunksIteratorFunction(cfg Config) chunkIteratorFunc { } // New builds a queryable and promql engine. -func New(cfg Config, limits *validation.Overrides, distributor Distributor, stores []QueryableWithFilter, reg prometheus.Registerer, logger log.Logger) (storage.SampleAndChunkQueryable, storage.ExemplarQueryable, v1.QueryEngine) { +func New(cfg Config, limits *validation.Overrides, distributor Distributor, stores []QueryableWithFilter, reg prometheus.Registerer, logger log.Logger) (storage.SampleAndChunkQueryable, storage.ExemplarQueryable, promql.QueryEngine) { iteratorFunc := getChunksIteratorFunction(cfg) distributorQueryable := newDistributorQueryable(distributor, cfg.IngesterMetadataStreaming, iteratorFunc, cfg.QueryIngestersWithin, cfg.QueryStoreForLabels) @@ -193,7 +192,7 @@ func New(cfg Config, limits *validation.Overrides, distributor Distributor, stor }) maxConcurrentMetric.Set(float64(cfg.MaxConcurrent)) - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine opts := promql.EngineOpts{ Logger: logger, Reg: reg, diff --git a/pkg/querier/querier_test.go b/pkg/querier/querier_test.go index fbb868d0e86..fbd15116c52 100644 --- a/pkg/querier/querier_test.go +++ b/pkg/querier/querier_test.go @@ -18,7 +18,6 @@ import ( "github.com/prometheus/prometheus/storage" "github.com/prometheus/prometheus/tsdb" "github.com/prometheus/prometheus/util/annotations" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -253,7 +252,7 @@ func TestShouldSortSeriesIfQueryingMultipleQueryables(t *testing.T) { MaxSamples: 1e6, Timeout: 1 * time.Minute, } - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine if thanosEngine { queryEngine = engine.New(engine.Opts{ EngineOpts: opts, @@ -499,7 +498,7 @@ func TestQuerier(t *testing.T) { for _, iterators := range []bool{false, true} { iterators := iterators t.Run(fmt.Sprintf("%s/%s/iterators=%t", query.query, encoding.name, iterators), func(t *testing.T) { - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine if thanosEngine { queryEngine = engine.New(engine.Opts{ EngineOpts: opts, @@ -648,7 +647,7 @@ func TestNoHistoricalQueryToIngester(t *testing.T) { for _, c := range testCases { cfg.QueryIngestersWithin = c.queryIngestersWithin t.Run(fmt.Sprintf("thanosEngine=%t,queryIngestersWithin=%v, test=%s", thanosEngine, c.queryIngestersWithin, c.name), func(t *testing.T) { - var queryEngine v1.QueryEngine + var queryEngine promql.QueryEngine if thanosEngine { queryEngine = engine.New(engine.Opts{ EngineOpts: opts, @@ -1223,7 +1222,7 @@ func mockDistibutorFor(t *testing.T, cs mockChunkStore, through model.Time) *Moc return result } -func testRangeQuery(t testing.TB, queryable storage.Queryable, queryEngine v1.QueryEngine, end model.Time, q query) *promql.Result { +func testRangeQuery(t testing.TB, queryable storage.Queryable, queryEngine promql.QueryEngine, end model.Time, q query) *promql.Result { from, through, step := time.Unix(0, 0), end.Time(), q.step ctx := user.InjectOrgID(context.Background(), "0") query, err := queryEngine.NewRangeQuery(ctx, queryable, nil, q.query, from, through, step) diff --git a/pkg/ruler/compat.go b/pkg/ruler/compat.go index e5a535cf691..4a02540ef63 100644 --- a/pkg/ruler/compat.go +++ b/pkg/ruler/compat.go @@ -19,7 +19,6 @@ import ( "github.com/prometheus/prometheus/promql/parser" "github.com/prometheus/prometheus/rules" "github.com/prometheus/prometheus/storage" - v1 "github.com/prometheus/prometheus/web/api/v1" "github.com/weaveworks/common/httpgrpc" "github.com/weaveworks/common/user" @@ -158,7 +157,7 @@ type RulesLimits interface { // EngineQueryFunc returns a new engine query function by passing an altered timestamp. // Modified from Prometheus rules.EngineQueryFunc // https://github.com/prometheus/prometheus/blob/v2.39.1/rules/manager.go#L189. -func EngineQueryFunc(engine v1.QueryEngine, q storage.Queryable, overrides RulesLimits, userID string, lookbackDelta time.Duration) rules.QueryFunc { +func EngineQueryFunc(engine promql.QueryEngine, q storage.Queryable, overrides RulesLimits, userID string, lookbackDelta time.Duration) rules.QueryFunc { return func(ctx context.Context, qs string, t time.Time) (promql.Vector, error) { // Enforce the max query length. maxQueryLength := overrides.MaxQueryLength(userID) @@ -299,7 +298,7 @@ type RulesManager interface { // ManagerFactory is a function that creates new RulesManager for given user and notifier.Manager. type ManagerFactory func(ctx context.Context, userID string, notifier *notifier.Manager, logger log.Logger, reg prometheus.Registerer) RulesManager -func DefaultTenantManagerFactory(cfg Config, p Pusher, q storage.Queryable, engine v1.QueryEngine, overrides RulesLimits, evalMetrics *RuleEvalMetrics, reg prometheus.Registerer) ManagerFactory { +func DefaultTenantManagerFactory(cfg Config, p Pusher, q storage.Queryable, engine promql.QueryEngine, overrides RulesLimits, evalMetrics *RuleEvalMetrics, reg prometheus.Registerer) ManagerFactory { // Wrap errors returned by Queryable to our wrapper, so that we can distinguish between those errors // and errors returned by PromQL engine. Errors from Queryable can be either caused by user (limits) or internal errors. // Errors from PromQL are always "user" errors. diff --git a/vendor/github.com/prometheus/client_golang/prometheus/collectors/version/version.go b/vendor/github.com/prometheus/client_golang/prometheus/collectors/version/version.go new file mode 100644 index 00000000000..c96e187126f --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/collectors/version/version.go @@ -0,0 +1,47 @@ +// Copyright 2016 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 version + +import ( + "fmt" + + "github.com/prometheus/common/version" + + "github.com/prometheus/client_golang/prometheus" +) + +// NewCollector returns a collector that exports metrics about current version +// information. +func NewCollector(program string) prometheus.Collector { + return prometheus.NewGaugeFunc( + prometheus.GaugeOpts{ + Namespace: program, + Name: "build_info", + Help: fmt.Sprintf( + "A metric with a constant '1' value labeled by version, revision, branch, goversion from which %s was built, and the goos and goarch for the build.", + program, + ), + ConstLabels: prometheus.Labels{ + "version": version.Version, + "revision": version.GetRevision(), + "branch": version.Branch, + "goversion": version.GoVersion, + "goos": version.GoOS, + "goarch": version.GoArch, + "tags": version.GetTags(), + }, + }, + func() float64 { return 1 }, + ) +} diff --git a/vendor/modules.txt b/vendor/modules.txt index e8b06ea2d0c..a0fe59bffa6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -774,6 +774,7 @@ github.com/prometheus/client_golang/api github.com/prometheus/client_golang/api/prometheus/v1 github.com/prometheus/client_golang/prometheus github.com/prometheus/client_golang/prometheus/collectors +github.com/prometheus/client_golang/prometheus/collectors/version github.com/prometheus/client_golang/prometheus/internal github.com/prometheus/client_golang/prometheus/promauto github.com/prometheus/client_golang/prometheus/promhttp