mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #78962 from yue9944882/chore/homogenize-cr-min-request-timeout
Chore: Applies configurable min-request-timeout for CR handler
This commit is contained in:
commit
1254cd677f
@ -188,6 +188,7 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget)
|
|||||||
c.ExtraConfig.MasterCount,
|
c.ExtraConfig.MasterCount,
|
||||||
s.GenericAPIServer.Authorizer,
|
s.GenericAPIServer.Authorizer,
|
||||||
c.GenericConfig.RequestTimeout,
|
c.GenericConfig.RequestTimeout,
|
||||||
|
time.Duration(c.GenericConfig.MinRequestTimeout)*time.Second,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -113,6 +113,9 @@ type crdHandler struct {
|
|||||||
|
|
||||||
// request timeout we should delay storage teardown for
|
// request timeout we should delay storage teardown for
|
||||||
requestTimeout time.Duration
|
requestTimeout time.Duration
|
||||||
|
|
||||||
|
// minRequestTimeout applies to CR's list/watch calls
|
||||||
|
minRequestTimeout time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
// crdInfo stores enough information to serve the storage for the custom resource
|
// crdInfo stores enough information to serve the storage for the custom resource
|
||||||
@ -155,7 +158,8 @@ func NewCustomResourceDefinitionHandler(
|
|||||||
authResolverWrapper webhook.AuthenticationInfoResolverWrapper,
|
authResolverWrapper webhook.AuthenticationInfoResolverWrapper,
|
||||||
masterCount int,
|
masterCount int,
|
||||||
authorizer authorizer.Authorizer,
|
authorizer authorizer.Authorizer,
|
||||||
requestTimeout time.Duration) (*crdHandler, error) {
|
requestTimeout time.Duration,
|
||||||
|
minRequestTimeout time.Duration) (*crdHandler, error) {
|
||||||
ret := &crdHandler{
|
ret := &crdHandler{
|
||||||
versionDiscoveryHandler: versionDiscoveryHandler,
|
versionDiscoveryHandler: versionDiscoveryHandler,
|
||||||
groupDiscoveryHandler: groupDiscoveryHandler,
|
groupDiscoveryHandler: groupDiscoveryHandler,
|
||||||
@ -168,6 +172,7 @@ func NewCustomResourceDefinitionHandler(
|
|||||||
masterCount: masterCount,
|
masterCount: masterCount,
|
||||||
authorizer: authorizer,
|
authorizer: authorizer,
|
||||||
requestTimeout: requestTimeout,
|
requestTimeout: requestTimeout,
|
||||||
|
minRequestTimeout: minRequestTimeout,
|
||||||
}
|
}
|
||||||
crdInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
crdInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
|
||||||
UpdateFunc: ret.updateCustomResourceDefinition,
|
UpdateFunc: ret.updateCustomResourceDefinition,
|
||||||
@ -289,17 +294,16 @@ func (r *crdHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
|||||||
func (r *crdHandler) serveResource(w http.ResponseWriter, req *http.Request, requestInfo *apirequest.RequestInfo, crdInfo *crdInfo, terminating bool, supportedTypes []string) http.HandlerFunc {
|
func (r *crdHandler) serveResource(w http.ResponseWriter, req *http.Request, requestInfo *apirequest.RequestInfo, crdInfo *crdInfo, terminating bool, supportedTypes []string) http.HandlerFunc {
|
||||||
requestScope := crdInfo.requestScopes[requestInfo.APIVersion]
|
requestScope := crdInfo.requestScopes[requestInfo.APIVersion]
|
||||||
storage := crdInfo.storages[requestInfo.APIVersion].CustomResource
|
storage := crdInfo.storages[requestInfo.APIVersion].CustomResource
|
||||||
minRequestTimeout := 1 * time.Minute
|
|
||||||
|
|
||||||
switch requestInfo.Verb {
|
switch requestInfo.Verb {
|
||||||
case "get":
|
case "get":
|
||||||
return handlers.GetResource(storage, storage, requestScope)
|
return handlers.GetResource(storage, storage, requestScope)
|
||||||
case "list":
|
case "list":
|
||||||
forceWatch := false
|
forceWatch := false
|
||||||
return handlers.ListResource(storage, storage, requestScope, forceWatch, minRequestTimeout)
|
return handlers.ListResource(storage, storage, requestScope, forceWatch, r.minRequestTimeout)
|
||||||
case "watch":
|
case "watch":
|
||||||
forceWatch := true
|
forceWatch := true
|
||||||
return handlers.ListResource(storage, storage, requestScope, forceWatch, minRequestTimeout)
|
return handlers.ListResource(storage, storage, requestScope, forceWatch, r.minRequestTimeout)
|
||||||
case "create":
|
case "create":
|
||||||
if terminating {
|
if terminating {
|
||||||
http.Error(w, fmt.Sprintf("%v not allowed while CustomResourceDefinition is terminating", requestInfo.Verb), http.StatusMethodNotAllowed)
|
http.Error(w, fmt.Sprintf("%v not allowed while CustomResourceDefinition is terminating", requestInfo.Verb), http.StatusMethodNotAllowed)
|
||||||
|
Loading…
Reference in New Issue
Block a user