Skip to content

Commit d97a828

Browse files
authored
Merge pull request #102 from weaveworks/update-prometheus
Update vendored prometheus/prometheus
2 parents 9969e80 + daa0188 commit d97a828

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+19794
-2665
lines changed

cmd/cortex/main.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -220,17 +220,20 @@ func setupQuerier(
220220
prefix string,
221221
logSuccess bool,
222222
) {
223-
querier := querier.MergeQuerier{
224-
Queriers: []querier.Querier{
225-
distributor,
226-
&querier.ChunkQuerier{
227-
Store: chunkStore,
223+
queryable := querier.Queryable{
224+
Q: querier.MergeQuerier{
225+
Queriers: []querier.Querier{
226+
distributor,
227+
&querier.ChunkQuerier{
228+
Store: chunkStore,
229+
},
228230
},
229231
},
230232
}
231-
engine := promql.NewEngine(querier, nil)
232233

233-
api := v1.NewAPI(engine, querier)
234+
engine := promql.NewEngine(queryable, nil)
235+
236+
api := v1.NewAPI(engine, querier.DummyStorage{queryable})
234237
router := route.New(func(r *http.Request) (context.Context, error) {
235238
userID := r.Header.Get(userIDHeaderName)
236239
if r.Method != "OPTIONS" && userID == "" {

querier/querier.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ func (q *ChunkQuerier) LabelValuesForLabelName(ctx context.Context, ln model.Lab
4343
return nil, nil
4444
}
4545

46+
// Queryable is an adapter between Prometheus' Queryable and Querier.
47+
type Queryable struct {
48+
Q local.Querier
49+
}
50+
51+
// Querier implements Queryable
52+
func (q Queryable) Querier() (local.Querier, error) {
53+
return q.Q, nil
54+
}
55+
4656
// A MergeQuerier is a promql.Querier that merges the results of multiple
4757
// cortex.Queriers for the same query.
4858
type MergeQuerier struct {
@@ -123,43 +133,53 @@ func (qm MergeQuerier) LabelValuesForLabelName(ctx context.Context, name model.L
123133
return values, nil
124134
}
125135

136+
// Close is a noop
137+
func (qm MergeQuerier) Close() error {
138+
return nil
139+
}
140+
141+
// DummyStorage creates a local.Storage compatible struct from a
142+
// Querable, such that it can be used with web.NewAPI.
126143
// TODO(juliusv): Remove all the dummy local.Storage methods below
127144
// once the upstream web API expects a leaner interface.
145+
type DummyStorage struct {
146+
Queryable
147+
}
128148

129149
// Append implements local.Storage. Needed to satisfy interface
130150
// requirements for usage with the Prometheus web API.
131-
func (qm MergeQuerier) Append(*model.Sample) error {
151+
func (DummyStorage) Append(*model.Sample) error {
132152
panic("MergeQuerier.Append() should never be called")
133153
}
134154

135155
// NeedsThrottling implements local.Storage. Needed to satisfy
136156
// interface requirements for usage with the Prometheus web API.
137-
func (qm MergeQuerier) NeedsThrottling() bool {
157+
func (DummyStorage) NeedsThrottling() bool {
138158
panic("MergeQuerier.NeedsThrottling() should never be called")
139159
}
140160

141161
// DropMetricsForLabelMatchers implements local.Storage. Needed
142162
// to satisfy interface requirements for usage with the Prometheus
143163
// web API.
144-
func (qm MergeQuerier) DropMetricsForLabelMatchers(context.Context, ...*metric.LabelMatcher) (int, error) {
164+
func (DummyStorage) DropMetricsForLabelMatchers(context.Context, ...*metric.LabelMatcher) (int, error) {
145165
return 0, fmt.Errorf("dropping metrics is not supported")
146166
}
147167

148168
// Start implements local.Storage. Needed to satisfy interface
149169
// requirements for usage with the Prometheus web API.
150-
func (qm MergeQuerier) Start() error {
170+
func (DummyStorage) Start() error {
151171
panic("MergeQuerier.Start() should never be called")
152172
}
153173

154174
// Stop implements local.Storage. Needed to satisfy interface
155175
// requirements for usage with the Prometheus web API.
156-
func (qm MergeQuerier) Stop() error {
176+
func (DummyStorage) Stop() error {
157177
panic("MergeQuerier.Stop() should never be called")
158178
}
159179

160180
// WaitForIndexing implements local.Storage. Needed to satisfy
161181
// interface requirements for usage with the Prometheus
162182
// web API.
163-
func (qm MergeQuerier) WaitForIndexing() {
183+
func (DummyStorage) WaitForIndexing() {
164184
panic("MergeQuerier.WaitForIndexing() should never be called")
165185
}

0 commit comments

Comments
 (0)