Skip to content

Commit 48ece79

Browse files
authored
continuoustest: query with strong read consistency (grafana#7540)
Signed-off-by: Vladimir Varankin <[email protected]>
1 parent 3e65388 commit 48ece79

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

pkg/continuoustest/client.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/prometheus/common/model"
1818
"github.com/prometheus/prometheus/prompb"
1919

20+
querierapi "github.com/grafana/mimir/pkg/querier/api"
2021
"github.com/grafana/mimir/pkg/util/instrumentation"
2122
util_math "github.com/grafana/mimir/pkg/util/math"
2223
)
@@ -153,6 +154,8 @@ func (c *Client) QueryRange(ctx context.Context, query string, start, end time.T
153154
ctx, cancel := context.WithTimeout(ctx, c.cfg.ReadTimeout)
154155
defer cancel()
155156

157+
ctx = querierapi.ContextWithReadConsistency(ctx, querierapi.ReadConsistencyStrong)
158+
156159
value, _, err := c.readClient.QueryRange(ctx, query, v1.Range{
157160
Start: start,
158161
End: end,
@@ -180,6 +183,8 @@ func (c *Client) Query(ctx context.Context, query string, ts time.Time, options
180183
ctx, cancel := context.WithTimeout(ctx, c.cfg.ReadTimeout)
181184
defer cancel()
182185

186+
ctx = querierapi.ContextWithReadConsistency(ctx, querierapi.ReadConsistencyStrong)
187+
183188
value, _, err := c.readClient.Query(ctx, query, ts)
184189
if err != nil {
185190
return nil, err
@@ -269,5 +274,10 @@ func (rt *clientRoundTripper) RoundTrip(req *http.Request) (*http.Response, erro
269274
} else {
270275
req.Header.Set("X-Scope-OrgID", rt.tenantID)
271276
}
277+
278+
if lvl, ok := querierapi.ReadConsistencyFromContext(req.Context()); ok {
279+
req.Header.Add(querierapi.ReadConsistencyHeader, lvl)
280+
}
281+
272282
return rt.rt.RoundTrip(req)
273283
}

pkg/continuoustest/client_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import (
2121
"github.com/stretchr/testify/mock"
2222
"github.com/stretchr/testify/require"
2323
"go.opentelemetry.io/collector/pdata/pmetric/pmetricotlp"
24+
25+
"github.com/grafana/mimir/pkg/querier/api"
2426
)
2527

2628
func TestOTLPHttpClient_WriteSeries(t *testing.T) {
@@ -203,6 +205,9 @@ func TestClient_QueryRange(t *testing.T) {
203205
server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
204206
receivedRequests = append(receivedRequests, request)
205207

208+
// Read requests must go through strong read consistency
209+
require.Equal(t, api.ReadConsistencyStrong, request.Header.Get(api.ReadConsistencyHeader))
210+
206211
writer.WriteHeader(http.StatusOK)
207212
_, err := writer.Write([]byte(`{"status":"success","data":{"resultType":"matrix","result":[]}}`))
208213
require.NoError(t, err)
@@ -248,6 +253,9 @@ func TestClient_Query(t *testing.T) {
248253
server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
249254
receivedRequests = append(receivedRequests, request)
250255

256+
// Read requests must go through strong read consistency
257+
require.Equal(t, api.ReadConsistencyStrong, request.Header.Get(api.ReadConsistencyHeader))
258+
251259
writer.WriteHeader(http.StatusOK)
252260
_, err := writer.Write([]byte(`{"status":"success","data":{"resultType":"vector","result":[]}}`))
253261
require.NoError(t, err)

0 commit comments

Comments
 (0)