Merge pull request #51415 from jpbetz/timeout-param-minimal

Automatic merge from submit-queue (batch tested with PRs 50932, 49610, 51312, 51415, 50705)

Add --request-timeout to kube-apiserver to make global request timeout configurable

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

Make the currently hard coded 60 global request timeout in apiserver configurable via a --request-timeout command line flag.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

https://github.com/kubernetes/kubernetes/issues/51355

**Special notes for your reviewer**:

We plan to backport this to 1.6 and 1.7. To ease the backport work, we've kept this change to a minimum. After this PR we will submit an additional PR to rename `--min-request-timeout` to something that more clearly describes it's purpose, such as `--long-running-request-timeout-min`.

**Release note**:

```release-note
Add --request-timeout to kube-apiserver to make global request timeout configurable.
```

Kubernetes-commit: 0b0b2a22c5837975824add628df6ecb2dc297d57
This commit is contained in:
Kubernetes Publisher 2017-08-29 01:17:40 -07:00
commit b04d0e4b5b
4 changed files with 209 additions and 194 deletions

366
Godeps/Godeps.json generated
View File

@ -840,735 +840,735 @@
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/validation",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/validation/path",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/announced",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/validation",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/proxy",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/rand",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/uuid",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "d2435b594d2ea04e92a664649fb7b3e131802cdd"
"Rev": "31421d9f8c2d6073628a89b4654fe22aced33167"
},
{
"ImportPath": "k8s.io/client-go/discovery",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/discovery/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/admissionregistration",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/apps",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/apps/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/apps/v1beta2",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/autoscaling/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/batch",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/batch/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/certificates",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/certificates/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/core",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/core/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/extensions",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/extensions/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/internalinterfaces",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/networking",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/networking/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/policy",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/policy/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/rbac/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/scheduling",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/settings",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/settings/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/storage",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/storage/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/informers/storage/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/scheme",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/apps/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/apps/v1beta2",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/autoscaling/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/autoscaling/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/batch/v2alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/certificates/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/core/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/extensions/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/networking/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/policy/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/rbac/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/settings/v1alpha1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/storage/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/listers/storage/v1beta1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/pkg/version",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/rest",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/rest/watch",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/testing",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/auth",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/cache",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/metrics",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/tools/reference",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/transport",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/util/cert",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/util/flowcontrol",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/util/homedir",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/client-go/util/integer",
"Rev": "2554b0b4622d739c8af9da548e8fe2223176803c"
"Rev": "db8228460e2de17f5d3a9a453f61dde0ba86545a"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/builder",

View File

@ -148,8 +148,11 @@ type Config struct {
// RESTOptionsGetter is used to construct RESTStorage types via the generic registry.
RESTOptionsGetter genericregistry.RESTOptionsGetter
// If specified, requests will be allocated a random timeout between this value, and twice this value.
// Note that it is up to the request handlers to ignore or honor this timeout. In seconds.
// If specified, all requests except those which match the LongRunningFunc predicate will timeout
// after this duration.
RequestTimeout time.Duration
// If specified, long running requests such as watch will be allocated a random timeout between this value, and
// twice this value. Note that it is up to the request handlers to ignore or honor this timeout. In seconds.
MinRequestTimeout int
// MaxRequestsInFlight is the maximum number of parallel non-long-running requests. Every further
// request has to wait. Applies only to non-mutating requests.
@ -222,6 +225,7 @@ func NewConfig(codecs serializer.CodecFactory) *Config {
EnableProfiling: true,
MaxRequestsInFlight: 400,
MaxMutatingRequestsInFlight: 200,
RequestTimeout: time.Duration(60) * time.Second,
MinRequestTimeout: 1800,
EnableAPIResponseCompression: utilfeature.DefaultFeatureGate.Enabled(features.APIResponseCompression),
@ -477,7 +481,7 @@ func DefaultBuildHandlerChain(apiHandler http.Handler, c *Config) http.Handler {
}
handler = genericapifilters.WithAuthentication(handler, c.RequestContextMapper, c.Authenticator, genericapifilters.Unauthorized(c.RequestContextMapper, c.Serializer, c.SupportsBasicAuth))
handler = genericfilters.WithCORS(handler, c.CorsAllowedOriginList, nil, nil, nil, "true")
handler = genericfilters.WithTimeoutForNonLongRunningRequests(handler, c.RequestContextMapper, c.LongRunningFunc)
handler = genericfilters.WithTimeoutForNonLongRunningRequests(handler, c.RequestContextMapper, c.LongRunningFunc, c.RequestTimeout)
handler = genericapifilters.WithRequestInfo(handler, NewRequestInfoResolver(c), c.RequestContextMapper)
handler = apirequest.WithRequestContext(handler, c.RequestContextMapper)
handler = genericfilters.WithPanicRecovery(handler)

View File

@ -31,12 +31,10 @@ import (
apirequest "k8s.io/apiserver/pkg/endpoints/request"
)
const globalTimeout = time.Minute
var errConnKilled = fmt.Errorf("kill connection/stream")
// WithTimeoutForNonLongRunningRequests times out non-long-running requests after the time given by globalTimeout.
func WithTimeoutForNonLongRunningRequests(handler http.Handler, requestContextMapper apirequest.RequestContextMapper, longRunning apirequest.LongRunningRequestCheck) http.Handler {
// WithTimeoutForNonLongRunningRequests times out non-long-running requests after the time given by timeout.
func WithTimeoutForNonLongRunningRequests(handler http.Handler, requestContextMapper apirequest.RequestContextMapper, longRunning apirequest.LongRunningRequestCheck, timeout time.Duration) http.Handler {
if longRunning == nil {
return handler
}
@ -45,13 +43,13 @@ func WithTimeoutForNonLongRunningRequests(handler http.Handler, requestContextMa
ctx, ok := requestContextMapper.Get(req)
if !ok {
// if this happens, the handler chain isn't setup correctly because there is no context mapper
return time.After(globalTimeout), func() {}, apierrors.NewInternalError(fmt.Errorf("no context found for request during timeout"))
return time.After(timeout), func() {}, apierrors.NewInternalError(fmt.Errorf("no context found for request during timeout"))
}
requestInfo, ok := apirequest.RequestInfoFrom(ctx)
if !ok {
// if this happens, the handler chain isn't setup correctly because there is no request info
return time.After(globalTimeout), func() {}, apierrors.NewInternalError(fmt.Errorf("no request info found for request during timeout"))
return time.After(timeout), func() {}, apierrors.NewInternalError(fmt.Errorf("no request info found for request during timeout"))
}
if longRunning(req, requestInfo) {
@ -69,7 +67,7 @@ func WithTimeoutForNonLongRunningRequests(handler http.Handler, requestContextMa
metrics.MonitorRequest(req, strings.ToUpper(requestInfo.Verb), "", requestInfo.Path, "", scope, http.StatusGatewayTimeout, 0, now)
}
}
return time.After(globalTimeout), metricFn, apierrors.NewTimeoutError(fmt.Sprintf("request did not complete within %s", globalTimeout), 0)
return time.After(timeout), metricFn, apierrors.NewTimeoutError(fmt.Sprintf("request did not complete within %s", timeout), 0)
}
return WithTimeout(handler, timeoutFunc)
}

View File

@ -19,6 +19,7 @@ package options
import (
"fmt"
"net"
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/serializer"
@ -39,6 +40,7 @@ type ServerRunOptions struct {
ExternalHost string
MaxRequestsInFlight int
MaxMutatingRequestsInFlight int
RequestTimeout time.Duration
MinRequestTimeout int
TargetRAMMB int
WatchCacheSizes []string
@ -49,6 +51,7 @@ func NewServerRunOptions() *ServerRunOptions {
return &ServerRunOptions{
MaxRequestsInFlight: defaults.MaxRequestsInFlight,
MaxMutatingRequestsInFlight: defaults.MaxMutatingRequestsInFlight,
RequestTimeout: defaults.RequestTimeout,
MinRequestTimeout: defaults.MinRequestTimeout,
}
}
@ -59,6 +62,7 @@ func (s *ServerRunOptions) ApplyTo(c *server.Config) error {
c.ExternalAddress = s.ExternalHost
c.MaxRequestsInFlight = s.MaxRequestsInFlight
c.MaxMutatingRequestsInFlight = s.MaxMutatingRequestsInFlight
c.RequestTimeout = s.RequestTimeout
c.MinRequestTimeout = s.MinRequestTimeout
c.PublicAddress = s.AdvertiseAddress
@ -93,7 +97,11 @@ func (s *ServerRunOptions) Validate() []error {
errors = append(errors, fmt.Errorf("--max-requests-inflight can not be negative value"))
}
if s.MaxMutatingRequestsInFlight < 0 {
errors = append(errors, fmt.Errorf("--min-request-timeout can not be negative value"))
errors = append(errors, fmt.Errorf("--max-mutating-requests-inflight can not be negative value"))
}
if s.RequestTimeout.Nanoseconds() < 0 {
errors = append(errors, fmt.Errorf("--request-timeout can not be negative value"))
}
return errors
@ -132,6 +140,11 @@ func (s *ServerRunOptions) AddUniversalFlags(fs *pflag.FlagSet) {
"The maximum number of mutating requests in flight at a given time. When the server exceeds this, "+
"it rejects requests. Zero for no limit.")
fs.DurationVar(&s.RequestTimeout, "request-timeout", s.RequestTimeout, ""+
"An optional field indicating the duration a handler must keep a request open before timing "+
"it out. This is the default request timeout for requests but may be overridden by flags such as "+
"--min-request-timeout for specific types of requests.")
fs.IntVar(&s.MinRequestTimeout, "min-request-timeout", s.MinRequestTimeout, ""+
"An optional field indicating the minimum number of seconds a handler must keep "+
"a request open before timing it out. Currently only honored by the watch request "+