Log query string on retry alongside the error (#7834)

**What this PR does / why we need it**:

For better observability of query retries.

Signed-off-by: Christian Haudum <christian.haudum@gmail.com>
pull/7838/head
Christian Haudum 3 years ago committed by GitHub
parent 25f4dda811
commit feaf9c3232
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      pkg/querier/queryrange/queryrangebase/retry.go
  2. 13
      pkg/querier/queryrange/queryrangebase/retry_test.go

@ -70,7 +70,7 @@ func (r retry) Do(ctx context.Context, req Request) (Response, error) {
httpResp, ok := httpgrpc.HTTPResponseFromError(err) httpResp, ok := httpgrpc.HTTPResponseFromError(err)
if !ok || httpResp.Code/100 == 5 { if !ok || httpResp.Code/100 == 5 {
lastErr = err lastErr = err
level.Error(util_log.WithContext(ctx, r.log)).Log("msg", "error processing request", "try", tries, "err", err) level.Error(util_log.WithContext(ctx, r.log)).Log("msg", "error processing request", "try", tries, "query", req.GetQuery(), "err", err)
continue continue
} }

@ -60,7 +60,10 @@ func TestRetry(t *testing.T) {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
try.Store(0) try.Store(0)
h := NewRetryMiddleware(log.NewNopLogger(), 5, nil).Wrap(tc.handler) h := NewRetryMiddleware(log.NewNopLogger(), 5, nil).Wrap(tc.handler)
resp, err := h.Do(context.Background(), nil) req := &PrometheusRequest{
Query: `{env="test"} |= "error"`,
}
resp, err := h.Do(context.Background(), req)
require.Equal(t, tc.err, err) require.Equal(t, tc.err, err)
require.Equal(t, tc.resp, resp) require.Equal(t, tc.resp, resp)
}) })
@ -68,6 +71,10 @@ func TestRetry(t *testing.T) {
} }
func Test_RetryMiddlewareCancel(t *testing.T) { func Test_RetryMiddlewareCancel(t *testing.T) {
req := &PrometheusRequest{
Query: `{env="test"} |= "error"`,
}
var try atomic.Int32 var try atomic.Int32
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
cancel() cancel()
@ -76,7 +83,7 @@ func Test_RetryMiddlewareCancel(t *testing.T) {
try.Inc() try.Inc()
return nil, ctx.Err() return nil, ctx.Err()
}), }),
).Do(ctx, nil) ).Do(ctx, req)
require.Equal(t, int32(0), try.Load()) require.Equal(t, int32(0), try.Load())
require.Equal(t, ctx.Err(), err) require.Equal(t, ctx.Err(), err)
@ -87,7 +94,7 @@ func Test_RetryMiddlewareCancel(t *testing.T) {
cancel() cancel()
return nil, errors.New("failed") return nil, errors.New("failed")
}), }),
).Do(ctx, nil) ).Do(ctx, req)
require.Equal(t, int32(1), try.Load()) require.Equal(t, int32(1), try.Load())
require.Equal(t, ctx.Err(), err) require.Equal(t, ctx.Err(), err)
} }

Loading…
Cancel
Save