Skip to content

Commit

Permalink
Solving references to forbidden functions
Browse files Browse the repository at this point in the history
Signed-off-by: Pedro Tanaka <pedro.stanaka@gmail.com>
  • Loading branch information
pedro-stanaka committed May 6, 2024
1 parent f8ace62 commit 422f8f4
Show file tree
Hide file tree
Showing 15 changed files with 39 additions and 32 deletions.
4 changes: 2 additions & 2 deletions pkg/api/query/grpc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ import (
"github.com/go-kit/log"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/prometheus/promql"
"github.com/prometheus/prometheus/promql/parser"
"github.com/prometheus/prometheus/storage"
"github.com/prometheus/prometheus/util/annotations"
"github.com/thanos-io/promql-engine/logicalplan"
equery "github.com/thanos-io/promql-engine/query"

"github.com/thanos-io/thanos/pkg/api/query/querypb"
"github.com/thanos-io/thanos/pkg/component"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/query"
"github.com/thanos-io/thanos/pkg/store"
)
Expand All @@ -36,7 +36,7 @@ func TestGRPCQueryAPIWithQueryPlan(t *testing.T) {
}
api := NewGRPCAPI(time.Now, nil, queryableCreator, engineFactory, querypb.EngineType_thanos, lookbackDeltaFunc, 0)

expr, err := parser.ParseExpr("metric")
expr, err := extpromql.ParseExpr("metric")
testutil.Ok(t, err)
lplan := logicalplan.NewFromAST(expr, &equery.Options{}, logicalplan.PlanOptions{})
testutil.Ok(t, err)
Expand Down
3 changes: 2 additions & 1 deletion pkg/api/query/v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import (
"github.com/thanos-io/thanos/pkg/exemplars"
"github.com/thanos-io/thanos/pkg/exemplars/exemplarspb"
extpromhttp "github.com/thanos-io/thanos/pkg/extprom/http"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/gate"
"github.com/thanos-io/thanos/pkg/logging"
"github.com/thanos-io/thanos/pkg/metadata"
Expand Down Expand Up @@ -374,7 +375,7 @@ func (qapi *QueryAPI) parseStoreDebugMatchersParam(r *http.Request) (storeMatche
}

for _, s := range r.Form[StoreMatcherParam] {
matchers, err := parser.ParseMetricSelector(s)
matchers, err := extpromql.ParseMetricSelector(s)
if err != nil {
return nil, &api.ApiError{Typ: api.ErrorBadData, Err: err}
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/block/metadata/meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ import (
"github.com/pkg/errors"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/model/relabel"
"github.com/prometheus/prometheus/promql/parser"
"github.com/prometheus/prometheus/tsdb"
"github.com/prometheus/prometheus/tsdb/fileutil"
"github.com/prometheus/prometheus/tsdb/tombstones"
"gopkg.in/yaml.v3"

"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/runutil"
)

Expand Down Expand Up @@ -136,7 +136,7 @@ type Rewrite struct {
type Matchers []*labels.Matcher

func (m *Matchers) UnmarshalYAML(value *yaml.Node) (err error) {
*m, err = parser.ParseMetricSelector(value.Value)
*m, err = extpromql.ParseMetricSelector(value.Value)
if err != nil {
return errors.Wrapf(err, "parse metric selector %v", value.Value)
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/exemplars/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ package exemplars

import (
"context"
"github.com/thanos-io/thanos/pkg/extpromql"
"io"
"strings"

Expand All @@ -20,6 +19,7 @@ import (
"google.golang.org/grpc/status"

"github.com/thanos-io/thanos/pkg/exemplars/exemplarspb"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/store"
"github.com/thanos-io/thanos/pkg/store/storepb"
"github.com/thanos-io/thanos/pkg/tracing"
Expand Down
5 changes: 2 additions & 3 deletions pkg/exemplars/proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ package exemplars
import (
"context"
"fmt"
"github.com/thanos-io/thanos/pkg/extpromql"
"io"
"os"
"reflect"
"sync"
"testing"

"github.com/efficientgo/core/testutil"
"github.com/go-kit/log"
"github.com/pkg/errors"
"github.com/prometheus/prometheus/model/labels"
Expand All @@ -22,9 +22,8 @@ import (
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/efficientgo/core/testutil"

"github.com/thanos-io/thanos/pkg/exemplars/exemplarspb"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/store/labelpb"
"github.com/thanos-io/thanos/pkg/store/storepb"
)
Expand Down
2 changes: 2 additions & 0 deletions pkg/extpromql/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ package extpromql

import (
"fmt"

"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"

"github.com/thanos-io/promql-engine/execution/function"
)

Expand Down
18 changes: 11 additions & 7 deletions pkg/extpromql/parser_test.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
// Copyright (c) The Thanos Authors.
// Licensed under the Apache License 2.0.

package extpromql_test

import (
"fmt"
"github.com/efficientgo/core/testutil"
"github.com/prometheus/prometheus/model/labels"
"github.com/thanos-io/thanos/pkg/extpromql"
"testing"

"github.com/efficientgo/core/testutil"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"

"github.com/thanos-io/thanos/pkg/extpromql"
)

func TestParseMetricSelector(t *testing.T) {
Expand Down Expand Up @@ -39,13 +43,13 @@ func TestParseMetricSelector(t *testing.T) {

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
// Call your implementation of ParseMetricSelector
got, err := extpromql.ParseMetricSelector(tc.input)
//lint:ignore faillint Testing against prometheus parser.
want, err := parser.ParseMetricSelector(tc.input)
if err != nil {
t.Fatalf("ParseMetricSelector failed: %v", err)
t.Fatalf("Prometheus ParseMetricSelector failed: %v", err)
}

want, err := parser.ParseMetricSelector(tc.input)
got, err := extpromql.ParseMetricSelector(tc.input)
if err != nil {
t.Fatalf("ParseMetricSelector failed: %v", err)
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/query/remote_engine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ import (
"github.com/go-kit/log"
"github.com/pkg/errors"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"
"github.com/thanos-io/promql-engine/logicalplan"
"github.com/thanos-io/promql-engine/query"
"google.golang.org/grpc"

"github.com/thanos-io/thanos/pkg/api/query/querypb"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/info/infopb"
"github.com/thanos-io/thanos/pkg/store/labelpb"
)
Expand All @@ -34,7 +34,7 @@ func TestRemoteEngine_Warnings(t *testing.T) {
end = time.Unix(120, 0)
step = 30 * time.Second
)
qryExpr, err := parser.ParseExpr("up")
qryExpr, err := extpromql.ParseExpr("up")
testutil.Ok(t, err)

plan := logicalplan.NewFromAST(qryExpr, &query.Options{
Expand Down
6 changes: 4 additions & 2 deletions pkg/query/test_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ import (
"github.com/prometheus/prometheus/promql/parser/posrange"
"github.com/prometheus/prometheus/storage"
"github.com/prometheus/prometheus/util/teststorage"

"github.com/thanos-io/thanos/pkg/extpromql"
)

var (
Expand Down Expand Up @@ -261,7 +263,7 @@ func ParseStore(lines []string, i int) (int, *storeCmd, error) {
}
parts := patStore.FindStringSubmatch(lines[i])

m, err := parser.ParseMetricSelector(parts[1])
m, err := extpromql.ParseMetricSelector(parts[1])
if err != nil {
return i, nil, raise(i, "invalid matcher definition %q: %s", parts[1], err)
}
Expand Down Expand Up @@ -322,7 +324,7 @@ func ParseEval(lines []string, i int) (int, *evalCmd, error) {
at = parts[2]
expr = parts[3]
)
_, err := parser.ParseExpr(expr)
_, err := extpromql.ParseExpr(expr)
if err != nil {
if perr, ok := err.(*parser.ParseErr); ok {
perr.LineOffset = i
Expand Down
4 changes: 2 additions & 2 deletions pkg/queryfrontend/queryinstant_codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"bytes"
"context"
"encoding/json"
"github.com/thanos-io/thanos/pkg/extpromql"
"io"
"net/http"
"net/url"
Expand All @@ -18,14 +17,15 @@ import (
"github.com/opentracing/opentracing-go"
otlog "github.com/opentracing/opentracing-go/log"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/promql/parser"
"github.com/weaveworks/common/httpgrpc"

"github.com/prometheus/prometheus/promql/parser"
"github.com/thanos-io/thanos/internal/cortex/cortexpb"
"github.com/thanos-io/thanos/internal/cortex/querier/queryrange"
cortexutil "github.com/thanos-io/thanos/internal/cortex/util"
"github.com/thanos-io/thanos/internal/cortex/util/spanlogger"
queryv1 "github.com/thanos-io/thanos/pkg/api/query"
"github.com/thanos-io/thanos/pkg/extpromql"
)

// queryInstantCodec is used to encode/decode Thanos instant query requests and responses.
Expand Down
5 changes: 2 additions & 3 deletions pkg/queryfrontend/queryrange_codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,12 @@ import (

"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"
"github.com/weaveworks/common/httpgrpc"

"github.com/thanos-io/thanos/internal/cortex/querier/queryrange"
cortexutil "github.com/thanos-io/thanos/internal/cortex/util"

queryv1 "github.com/thanos-io/thanos/pkg/api/query"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/store/storepb"
)

Expand Down Expand Up @@ -269,7 +268,7 @@ func parsePartialResponseParam(s string, defaultEnablePartialResponse bool) (boo
func parseMatchersParam(ss url.Values, matcherParam string) ([][]*labels.Matcher, error) {
matchers := make([][]*labels.Matcher, 0, len(ss[matcherParam]))
for _, s := range ss[matcherParam] {
ms, err := parser.ParseMetricSelector(s)
ms, err := extpromql.ParseMetricSelector(s)
if err != nil {
return nil, httpgrpc.Errorf(http.StatusBadRequest, errCannotParse, matcherParam)
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/querysharding/analyzer.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@ package querysharding

import (
"fmt"
"github.com/thanos-io/thanos/pkg/extpromql"

lru "github.com/hashicorp/golang-lru/v2"
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/promql/parser"

"github.com/thanos-io/thanos/pkg/extpromql"
)

var (
Expand Down
4 changes: 2 additions & 2 deletions pkg/rules/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import (

"github.com/pkg/errors"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"
"github.com/prometheus/prometheus/util/annotations"

"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/rules/rulespb"
"github.com/thanos-io/thanos/pkg/tracing"
)
Expand Down Expand Up @@ -64,7 +64,7 @@ func (rr *GRPCClient) Rules(ctx context.Context, req *rulespb.RulesRequest) (*ru
var err error
matcherSets := make([][]*labels.Matcher, len(req.MatcherString))
for i, s := range req.MatcherString {
matcherSets[i], err = parser.ParseMetricSelector(s)
matcherSets[i], err = extpromql.ParseMetricSelector(s)
if err != nil {
return nil, nil, errors.Wrap(err, "parser ParseMetricSelector")
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/store/storepb/custom_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import (

"github.com/pkg/errors"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"
"github.com/prometheus/prometheus/tsdb/chunkenc"

"github.com/efficientgo/core/testutil"
"github.com/thanos-io/thanos/pkg/extpromql"
"github.com/thanos-io/thanos/pkg/store/labelpb"
)

Expand Down Expand Up @@ -520,7 +520,7 @@ func TestMatchersToString_Translate(t *testing.T) {
testutil.Equals(t, c.expected, MatchersToString(ms...))

// Is this parsable?
promMsParsed, err := parser.ParseMetricSelector(c.expected)
promMsParsed, err := extpromql.ParseMetricSelector(c.expected)
testutil.Ok(t, err)
testutil.Assert(t, len(promMs) == len(promMsParsed))
for i := 0; i < len(promMs); i++ {
Expand Down
3 changes: 1 addition & 2 deletions pkg/tenancy/tenancy.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"github.com/pkg/errors"
"github.com/prometheus-community/prom-label-proxy/injectproxy"
"github.com/prometheus/prometheus/model/labels"
"github.com/prometheus/prometheus/promql/parser"
"google.golang.org/grpc/metadata"

"github.com/thanos-io/thanos/pkg/extpromql"
Expand Down Expand Up @@ -180,7 +179,7 @@ func getLabelMatchers(formMatchers []string, tenant string, enforceTenancy bool,
}

for _, s := range formMatchers {
matchers, err := parser.ParseMetricSelector(s)
matchers, err := extpromql.ParseMetricSelector(s)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 422f8f4

Please sign in to comment.