Ignore broken query limits header. (#9103)

pull/8725/head
Karsten Jeschkies 3 years ago committed by GitHub
parent 7edda371ea
commit ff36227d87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      pkg/util/querylimits/middleware.go
  2. 21
      pkg/util/querylimits/middleware_test.go

@ -27,11 +27,8 @@ func (l *queryLimitsMiddleware) Wrap(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
limits, err := ExtractQueryLimitsHTTP(r)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
if _, err := w.Write([]byte(err.Error())); err != nil {
level.Error(util_log.Logger).Log("msg", "error in queryLimitsMiddleware Wrap", "err", err)
}
return
level.Warn(util_log.Logger).Log("msg", "could not extract query limits from header", "err", err)
limits = nil
}
if limits != nil {

@ -23,6 +23,25 @@ func Test_MiddlewareWithoutHeader(t *testing.T) {
r, err := http.NewRequest("GET", "/example", nil)
require.NoError(t, err)
wrapped.ServeHTTP(rr, r)
response := rr.Result()
require.Equal(t, http.StatusOK, response.StatusCode)
}
func Test_MiddlewareWithBrokenHeader(t *testing.T) {
nextHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
limits := ExtractQueryLimitsContext(r.Context())
require.Nil(t, limits)
})
m := NewQueryLimitsMiddleware(log.NewNopLogger())
wrapped := m.Wrap(nextHandler)
rr := httptest.NewRecorder()
r, err := http.NewRequest("GET", "/example", nil)
require.NoError(t, err)
r.Header.Add(HTTPHeaderQueryLimitsKey, "{broken}")
wrapped.ServeHTTP(rr, r)
response := rr.Result()
require.Equal(t, http.StatusOK, response.StatusCode)
}
func Test_MiddlewareWithHeader(t *testing.T) {
@ -50,4 +69,6 @@ func Test_MiddlewareWithHeader(t *testing.T) {
err = InjectQueryLimitsHTTP(r, &limits)
require.NoError(t, err)
wrapped.ServeHTTP(rr, r)
response := rr.Result()
require.Equal(t, http.StatusOK, response.StatusCode)
}

Loading…
Cancel
Save