Skip to content

Commit 3c5b361

Browse files
committed
Update badges query handler
1 parent 36ab583 commit 3c5b361

File tree

1 file changed

+41
-39
lines changed

1 file changed

+41
-39
lines changed

internal/api/handler.go

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,60 +1946,62 @@ func HandleSeriesQuery(r *httpRequestHandler) {
19461946
}
19471947

19481948
func HandleBadgesQuery(r *httpRequestHandler) {
1949-
var err error
1950-
var req seriesRequest
1951-
if req, err = r.parseSeriesRequest(); err == nil {
1949+
req, err := r.parseSeriesRequest()
1950+
if err == nil {
19521951
err = req.validate(&r.requestHandler)
19531952
}
19541953
if err != nil {
19551954
respondJSON(r, nil, 0, 0, err)
19561955
return
19571956
}
1958-
var limit int
1959-
if len(req.promQL) == 0 {
1960-
if req.promQL, err = r.getPromQuery(req); err != nil {
1957+
ctx, cancel := context.WithTimeout(r.Context(), r.querySelectTimeout)
1958+
defer cancel()
1959+
query := promql.Query{
1960+
Start: req.from.Unix(),
1961+
End: req.to.Unix(),
1962+
Step: req.step,
1963+
Expr: req.promQL,
1964+
Options: promql.Options{
1965+
Version: req.version,
1966+
Version3Start: r.Version3Start.Load(),
1967+
AvoidCache: req.avoidCache,
1968+
Extend: req.excessPoints,
1969+
ExplicitGrouping: true,
1970+
ScreenWidth: req.screenWidth,
1971+
Vars: req.vars,
1972+
Compat: req.compat,
1973+
TimeNow: time.Now().Unix(),
1974+
},
1975+
}
1976+
if query.Expr == "" {
1977+
query.Expr, err = r.getPromQuery(req)
1978+
if err != nil {
19611979
respondJSON(r, nil, 0, 0, err)
19621980
return
19631981
}
1964-
} else {
1965-
limit = req.numResults
19661982
}
1967-
ctx, cancel := context.WithTimeout(r.Context(), r.querySelectTimeout)
1968-
defer cancel()
1969-
var offsets = make([]int64, 0, len(req.shifts))
1970-
for _, v := range req.shifts {
1971-
offsets = append(offsets, -toSec(v))
1983+
ev, err := r.promEngine.NewEvaluator(ctx, r, query)
1984+
if err != nil {
1985+
respondJSON(r, nil, 0, 0, err)
1986+
return
19721987
}
1973-
ev, err := r.promEngine.NewEvaluator(
1974-
ctx, r,
1975-
promql.Query{
1976-
Start: req.from.Unix(),
1977-
End: req.to.Unix(),
1978-
Step: req.step,
1979-
Expr: req.promQL,
1980-
Options: promql.Options{
1981-
Version: req.version,
1982-
Version3Start: r.Version3Start.Load(),
1983-
AvoidCache: req.avoidCache,
1984-
Extend: req.excessPoints,
1985-
ExplicitGrouping: true,
1986-
QuerySequential: r.querySequential,
1987-
ScreenWidth: req.screenWidth,
1988-
MaxHost: req.maxHost,
1989-
Offsets: offsets,
1990-
Limit: limit,
1991-
Vars: req.vars,
1992-
Compat: req.compat,
1993-
},
1994-
})
1988+
metric := ev.QueryMetric()
1989+
if metric == nil {
1990+
respondJSON(r, nil, 0, 0, err)
1991+
return
1992+
}
1993+
query.Expr = fmt.Sprintf(`%s{@what="countraw,avg",@by="1,2",2=" 0",2=" %d"}`, format.BuiltinMetricNameBadges, metric.MetricID)
1994+
query.Options.Vars = nil
1995+
val, cancel, err := r.promEngine.Exec(ctx, r, query)
19951996
if err != nil {
19961997
respondJSON(r, nil, 0, 0, err)
19971998
return
19981999
}
1999-
var res SeriesResponse
2000-
if metric := ev.QueryMetric(); metric != nil {
2001-
badges, cancel := r.queryBadges(ctx, req, metric)
2002-
defer cancel()
2000+
defer cancel()
2001+
res := SeriesResponse{
2002+
DebugQueries: r.trace,
2003+
}
2004+
if badges, _ := val.(*promql.TimeSeries); badges != nil {
20032005
for _, d := range badges.Series.Data {
20042006
if t, ok := d.Tags.ID2Tag["2"]; !ok || t.SValue != metric.Name {
20052007
continue

0 commit comments

Comments
 (0)