Skip to content

Commit 5ae03f9

Browse files
committed
cleanup(ruler): remove unused filterSeriesSet, sliceSeriesSet, buildSelectorExpr
1 parent d54a9ba commit 5ae03f9

2 files changed

Lines changed: 0 additions & 121 deletions

File tree

pkg/ruler/prefetch_queryable.go

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@ package ruler
22

33
import (
44
"context"
5-
"strings"
65
"time"
76

87
"github.com/prometheus/prometheus/model/labels"
98
"github.com/prometheus/prometheus/promql"
109
"github.com/prometheus/prometheus/promql/parser"
1110
"github.com/prometheus/prometheus/rules"
12-
"github.com/prometheus/prometheus/storage"
13-
"github.com/prometheus/prometheus/util/annotations"
1411
)
1512

1613
// prefetchEntry holds pre-fetched results for a merged selector.
@@ -82,20 +79,6 @@ func executePrefetch(ctx context.Context, plan []mergedSelect, queryFunc rules.Q
8279
return cache
8380
}
8481

85-
// buildSelectorExpr constructs a PromQL selector string from matchers.
86-
func buildSelectorExpr(ms []*labels.Matcher) string {
87-
var b strings.Builder
88-
b.WriteByte('{')
89-
for i, m := range ms {
90-
if i > 0 {
91-
b.WriteByte(',')
92-
}
93-
b.WriteString(m.String())
94-
}
95-
b.WriteByte('}')
96-
return b.String()
97-
}
98-
9982
// isMatcherSetSuperset returns true if superMatchers covers all series that subMatchers would match.
10083
func isMatcherSetSuperset(superMatchers, subMatchers []*labels.Matcher) bool {
10184
for _, sup := range superMatchers {
@@ -135,32 +118,6 @@ func extraMatchers(entryMatchers, queryMatchers []*labels.Matcher) []*labels.Mat
135118
return result
136119
}
137120

138-
// filterSeriesSet wraps a SeriesSet and applies additional matchers locally.
139-
type filterSeriesSet struct {
140-
inner storage.SeriesSet
141-
filters []*labels.Matcher
142-
cur storage.Series
143-
}
144-
145-
func newFilterSeriesSet(inner storage.SeriesSet, filters []*labels.Matcher) storage.SeriesSet {
146-
return &filterSeriesSet{inner: inner, filters: filters}
147-
}
148-
149-
func (f *filterSeriesSet) Next() bool {
150-
for f.inner.Next() {
151-
s := f.inner.At()
152-
if matchesAll(s.Labels(), f.filters) {
153-
f.cur = s
154-
return true
155-
}
156-
}
157-
return false
158-
}
159-
160-
func (f *filterSeriesSet) At() storage.Series { return f.cur }
161-
func (f *filterSeriesSet) Err() error { return f.inner.Err() }
162-
func (f *filterSeriesSet) Warnings() annotations.Annotations { return nil }
163-
164121
func matchesAll(lset labels.Labels, matchers []*labels.Matcher) bool {
165122
for _, m := range matchers {
166123
if !m.Matches(lset.Get(m.Name)) {
@@ -170,25 +127,6 @@ func matchesAll(lset labels.Labels, matchers []*labels.Matcher) bool {
170127
return true
171128
}
172129

173-
// sliceSeriesSet serves series from a pre-materialized slice.
174-
type sliceSeriesSet struct {
175-
series []storage.Series
176-
idx int
177-
}
178-
179-
func newSliceSeriesSet(series []storage.Series) storage.SeriesSet {
180-
return &sliceSeriesSet{series: series, idx: -1}
181-
}
182-
183-
func (s *sliceSeriesSet) Next() bool {
184-
s.idx++
185-
return s.idx < len(s.series)
186-
}
187-
188-
func (s *sliceSeriesSet) At() storage.Series { return s.series[s.idx] }
189-
func (s *sliceSeriesSet) Err() error { return nil }
190-
func (s *sliceSeriesSet) Warnings() annotations.Annotations { return nil }
191-
192130
// extractSelectorsFromExpr extracts VectorSelector matchers from a PromQL expression string.
193131
func extractSelectorsFromExpr(qs string) [][]*labels.Matcher {
194132
expr, err := parser.ParseExpr(qs)

pkg/ruler/prefetch_queryable_test.go

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -7,60 +7,10 @@ import (
77

88
"github.com/prometheus/prometheus/model/labels"
99
"github.com/prometheus/prometheus/promql"
10-
"github.com/prometheus/prometheus/storage"
11-
"github.com/prometheus/prometheus/tsdb/chunkenc"
1210
"github.com/stretchr/testify/assert"
1311
"github.com/stretchr/testify/require"
1412
)
1513

16-
type mockSeries struct {
17-
lset labels.Labels
18-
}
19-
20-
func (s *mockSeries) Labels() labels.Labels { return s.lset }
21-
func (s *mockSeries) Iterator(chunkenc.Iterator) chunkenc.Iterator { return chunkenc.NewNopIterator() }
22-
23-
func TestFilterSeriesSet(t *testing.T) {
24-
series := []storage.Series{
25-
&mockSeries{lset: labels.FromStrings("__name__", "http_requests", "job", "api", "env", "prod")},
26-
&mockSeries{lset: labels.FromStrings("__name__", "http_requests", "job", "web", "env", "prod")},
27-
&mockSeries{lset: labels.FromStrings("__name__", "http_requests", "job", "api", "env", "dev")},
28-
}
29-
30-
// Filter to only job="api"
31-
filters := []*labels.Matcher{labels.MustNewMatcher(labels.MatchEqual, "job", "api")}
32-
ss := newFilterSeriesSet(newSliceSeriesSet(series), filters)
33-
34-
var got []labels.Labels
35-
for ss.Next() {
36-
got = append(got, ss.At().Labels())
37-
}
38-
require.NoError(t, ss.Err())
39-
assert.Len(t, got, 2)
40-
assert.Equal(t, "api", got[0].Get("job"))
41-
assert.Equal(t, "api", got[1].Get("job"))
42-
}
43-
44-
func TestFilterSeriesSet_RegexFilter(t *testing.T) {
45-
series := []storage.Series{
46-
&mockSeries{lset: labels.FromStrings("__name__", "cpu", "host", "server-1")},
47-
&mockSeries{lset: labels.FromStrings("__name__", "cpu", "host", "server-2")},
48-
&mockSeries{lset: labels.FromStrings("__name__", "cpu", "host", "db-1")},
49-
}
50-
51-
filters := []*labels.Matcher{labels.MustNewMatcher(labels.MatchRegexp, "host", "server-.*")}
52-
ss := newFilterSeriesSet(newSliceSeriesSet(series), filters)
53-
54-
var got []labels.Labels
55-
for ss.Next() {
56-
got = append(got, ss.At().Labels())
57-
}
58-
require.NoError(t, ss.Err())
59-
assert.Len(t, got, 2)
60-
assert.Equal(t, "server-1", got[0].Get("host"))
61-
assert.Equal(t, "server-2", got[1].Get("host"))
62-
}
63-
6414
func TestPrefetchCache_FindSuperset(t *testing.T) {
6515
// Cache has a broad entry: __name__="http", job=~".*"
6616
cache := &prefetchCache{
@@ -202,12 +152,3 @@ func TestExecutePrefetch(t *testing.T) {
202152
require.Len(t, cache.entries, 1)
203153
assert.Len(t, cache.entries[0].vector, 2)
204154
}
205-
206-
func TestBuildSelectorExpr(t *testing.T) {
207-
ms := []*labels.Matcher{
208-
labels.MustNewMatcher(labels.MatchEqual, "__name__", "http"),
209-
labels.MustNewMatcher(labels.MatchRegexp, "job", ".*"),
210-
}
211-
got := buildSelectorExpr(ms)
212-
assert.Equal(t, `{__name__="http",job=~".*"}`, got)
213-
}

0 commit comments

Comments
 (0)