Merge pull request #49678 from smarterclayton/429_metric

Automatic merge from submit-queue

Timeout and Max-in-flight don't report non-resource URLs correctly.

Unify error reporting for 429 and 504 to be correct for timeout and max in flight and eviction. Add better messages to eviction (removing a todo). Return the correct body content for timeouts (reason and code should be correct).

This potentially increases cardinality of 429, but because non-api urls may be under the max-inflight budget we need to report them somewhere (if something breaks and starts fetching API versions endlessly).

```release-note
The 504 timeout error was returning a JSON error body that indicated it was a 500.  The body contents now correctly report a 500 error.
```

Kubernetes-commit: 8d6bbaa85f96f14ac9c9722ed1677e1052c974ba
This commit is contained in:
Kubernetes Publisher 2017-08-05 01:28:00 -07:00
commit 1091ffb59e
3 changed files with 52 additions and 52 deletions

96
Godeps/Godeps.json generated
View File

@ -432,195 +432,195 @@
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "abee1a2f97bdbf7f5c1bd6f363a3d1478bb1e8ec"
"Rev": "8cc513375dee45d0409b6cd3d1bec72cf3ea1be8"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",

View File

@ -889,7 +889,7 @@ func isTextResponse(resp *http.Response) bool {
func checkWait(resp *http.Response) (int, bool) {
switch r := resp.StatusCode; {
// any 500 error code and 429 can trigger a wait
case r == errors.StatusTooManyRequests, r >= 500:
case r == http.StatusTooManyRequests, r >= 500:
default:
return 0, false
}

View File

@ -1130,7 +1130,7 @@ func TestCheckRetryClosesBody(t *testing.T) {
return
}
w.Header().Set("Retry-After", "1")
http.Error(w, "Too many requests, please try again later.", apierrors.StatusTooManyRequests)
http.Error(w, "Too many requests, please try again later.", http.StatusTooManyRequests)
}))
defer testServer.Close()
@ -1204,7 +1204,7 @@ func TestCheckRetryHandles429And5xx(t *testing.T) {
return
}
w.Header().Set("Retry-After", "0")
w.WriteHeader([]int{apierrors.StatusTooManyRequests, 500, 501, 504}[count])
w.WriteHeader([]int{http.StatusTooManyRequests, 500, 501, 504}[count])
count++
}))
defer testServer.Close()
@ -1234,7 +1234,7 @@ func BenchmarkCheckRetryClosesBody(b *testing.B) {
return
}
w.Header().Set("Retry-After", "0")
w.WriteHeader(apierrors.StatusTooManyRequests)
w.WriteHeader(http.StatusTooManyRequests)
}))
defer testServer.Close()