From 763e6d1dbb6371c66b62e4ea4c1fcbee1c113bda Mon Sep 17 00:00:00 2001 From: wojtekt Date: Wed, 13 Oct 2021 07:43:05 +0200 Subject: [PATCH] Disable P&F for watch requests --- .../request/mutating_work_estimator.go | 7 +- .../util/flowcontrol/request/width_test.go | 236 +++++++++--------- 2 files changed, 126 insertions(+), 117 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go index 5202af2438d..2765bbc47f7 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go @@ -41,6 +41,12 @@ const ( ) func (e *mutatingWorkEstimator) estimate(r *http.Request) WorkEstimate { + // TODO(wojtekt): Remove once we tune the algorithm to not fail + // scalability tests. + return WorkEstimate{ + InitialSeats: 1, + } + requestInfo, ok := apirequest.RequestInfoFrom(r.Context()) if !ok { // no RequestInfo should never happen, but to be on the safe side @@ -51,7 +57,6 @@ func (e *mutatingWorkEstimator) estimate(r *http.Request) WorkEstimate { AdditionalLatency: eventAdditionalDuration, } } - watchCount := e.countFn(requestInfo) // The cost of the request associated with the watchers of that event diff --git a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/width_test.go b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/width_test.go index 68cde253200..8f244669175 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/width_test.go +++ b/staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/width_test.go @@ -252,132 +252,136 @@ func TestWorkEstimator(t *testing.T) { countErr: errors.New("unknown error"), initialSeatsExpected: maximumSeats, }, - { - name: "request verb is create, no watches", - requestURI: "http://server/apis/foo.bar/v1/foos", - requestInfo: &apirequest.RequestInfo{ - Verb: "create", - APIGroup: "foo.bar", - Resource: "foos", + // TODO(wojtekt): Reenable these tests after tuning algorithm to + // not fail scalability tests. + /* + { + name: "request verb is create, no watches", + requestURI: "http://server/apis/foo.bar/v1/foos", + requestInfo: &apirequest.RequestInfo{ + Verb: "create", + APIGroup: "foo.bar", + Resource: "foos", + }, + initialSeatsExpected: 1, + finalSeatsExpected: 0, + additionalLatencyExpected: 0, }, - initialSeatsExpected: 1, - finalSeatsExpected: 0, - additionalLatencyExpected: 0, - }, - { - name: "request verb is create, watches registered", - requestURI: "http://server/apis/foo.bar/v1/foos", - requestInfo: &apirequest.RequestInfo{ - Verb: "create", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is create, watches registered", + requestURI: "http://server/apis/foo.bar/v1/foos", + requestInfo: &apirequest.RequestInfo{ + Verb: "create", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 29, + initialSeatsExpected: 1, + finalSeatsExpected: 3, + additionalLatencyExpected: 5 * time.Millisecond, }, - watchCount: 29, - initialSeatsExpected: 1, - finalSeatsExpected: 3, - additionalLatencyExpected: 5 * time.Millisecond, - }, - { - name: "request verb is create, watches registered, no additional latency", - requestURI: "http://server/apis/foo.bar/v1/foos", - requestInfo: &apirequest.RequestInfo{ - Verb: "create", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is create, watches registered, no additional latency", + requestURI: "http://server/apis/foo.bar/v1/foos", + requestInfo: &apirequest.RequestInfo{ + Verb: "create", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 5, + initialSeatsExpected: 1, + finalSeatsExpected: 0, + additionalLatencyExpected: 0, }, - watchCount: 5, - initialSeatsExpected: 1, - finalSeatsExpected: 0, - additionalLatencyExpected: 0, - }, - { - name: "request verb is create, watches registered, maximum is exceeded", - requestURI: "http://server/apis/foo.bar/v1/foos", - requestInfo: &apirequest.RequestInfo{ - Verb: "create", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is create, watches registered, maximum is exceeded", + requestURI: "http://server/apis/foo.bar/v1/foos", + requestInfo: &apirequest.RequestInfo{ + Verb: "create", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 199, + initialSeatsExpected: 1, + finalSeatsExpected: 20, + additionalLatencyExpected: 5 * time.Millisecond, }, - watchCount: 199, - initialSeatsExpected: 1, - finalSeatsExpected: 20, - additionalLatencyExpected: 5 * time.Millisecond, - }, - { - name: "request verb is update, no watches", - requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "update", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is update, no watches", + requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "update", + APIGroup: "foo.bar", + Resource: "foos", + }, + initialSeatsExpected: 1, + finalSeatsExpected: 0, + additionalLatencyExpected: 0, }, - initialSeatsExpected: 1, - finalSeatsExpected: 0, - additionalLatencyExpected: 0, - }, - { - name: "request verb is update, watches registered", - requestURI: "http://server/apis/foor.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "update", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is update, watches registered", + requestURI: "http://server/apis/foor.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "update", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 29, + initialSeatsExpected: 1, + finalSeatsExpected: 3, + additionalLatencyExpected: 5 * time.Millisecond, }, - watchCount: 29, - initialSeatsExpected: 1, - finalSeatsExpected: 3, - additionalLatencyExpected: 5 * time.Millisecond, - }, - { - name: "request verb is patch, no watches", - requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "patch", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is patch, no watches", + requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "patch", + APIGroup: "foo.bar", + Resource: "foos", + }, + initialSeatsExpected: 1, + finalSeatsExpected: 0, + additionalLatencyExpected: 0, }, - initialSeatsExpected: 1, - finalSeatsExpected: 0, - additionalLatencyExpected: 0, - }, - { - name: "request verb is patch, watches registered", - requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "patch", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is patch, watches registered", + requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "patch", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 29, + initialSeatsExpected: 1, + finalSeatsExpected: 3, + additionalLatencyExpected: 5 * time.Millisecond, }, - watchCount: 29, - initialSeatsExpected: 1, - finalSeatsExpected: 3, - additionalLatencyExpected: 5 * time.Millisecond, - }, - { - name: "request verb is delete, no watches", - requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "delete", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is delete, no watches", + requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "delete", + APIGroup: "foo.bar", + Resource: "foos", + }, + initialSeatsExpected: 1, + finalSeatsExpected: 0, + additionalLatencyExpected: 0, }, - initialSeatsExpected: 1, - finalSeatsExpected: 0, - additionalLatencyExpected: 0, - }, - { - name: "request verb is delete, watches registered", - requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", - requestInfo: &apirequest.RequestInfo{ - Verb: "delete", - APIGroup: "foo.bar", - Resource: "foos", + { + name: "request verb is delete, watches registered", + requestURI: "http://server/apis/foo.bar/v1/foos/myfoo", + requestInfo: &apirequest.RequestInfo{ + Verb: "delete", + APIGroup: "foo.bar", + Resource: "foos", + }, + watchCount: 29, + initialSeatsExpected: 1, + finalSeatsExpected: 3, + additionalLatencyExpected: 5 * time.Millisecond, }, - watchCount: 29, - initialSeatsExpected: 1, - finalSeatsExpected: 3, - additionalLatencyExpected: 5 * time.Millisecond, - }, + */ } for _, test := range tests {