filters

package
v0.0.0-...-fb1d941 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 5, 2022 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package filters contains all the http handler chain filters which are not api related.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BasicLongRunningRequestCheck

func BasicLongRunningRequestCheck(longRunningVerbs, longRunningSubresources sets.String) apirequest.LongRunningRequestCheck

BasicLongRunningRequestCheck returns true if the given request has one of the specified verbs or one of the specified subresources, or is a profiler request.

func StartMaxInFlightWatermarkMaintenance

func StartMaxInFlightWatermarkMaintenance(stopCh <-chan struct{})

StartMaxInFlightWatermarkMaintenance starts the goroutines to observe and maintain watermarks for max-in-flight requests.

func StartPriorityAndFairnessWatermarkMaintenance

func StartPriorityAndFairnessWatermarkMaintenance(stopCh <-chan struct{})

StartPriorityAndFairnessWatermarkMaintenance starts the goroutines to observe and maintain watermarks for priority-and-fairness requests.

func WithCORS

func WithCORS(handler http.Handler, allowedOriginPatterns []string, allowedMethods []string, allowedHeaders []string, exposedHeaders []string, allowCredentials string) http.Handler

WithCORS is a simple CORS implementation that wraps an http Handler. Pass nil for allowedMethods and allowedHeaders to use the defaults. If allowedOriginPatterns is empty or nil, no CORS support is installed.

func WithContentType

func WithContentType(handler http.Handler, contentType string) http.Handler

WithContentType sets both the Content-Type and the X-Content-Type-Options (nosniff) header

func WithHSTS

func WithHSTS(handler http.Handler, hstsDirectives []string) http.Handler

WithHSTS is a simple HSTS implementation that wraps an http Handler. If hstsDirectives is empty or nil, no HSTS support is installed.

func WithHTTPLogging

func WithHTTPLogging(handler http.Handler) http.Handler

WithHTTPLogging enables logging of incoming requests.

func WithMaxInFlightLimit

func WithMaxInFlightLimit(
	handler http.Handler,
	nonMutatingLimit int,
	mutatingLimit int,
	longRunningRequestCheck apirequest.LongRunningRequestCheck,
) http.Handler

WithMaxInFlightLimit limits the number of in-flight requests to buffer size of the passed in channel.

func WithPanicRecovery

func WithPanicRecovery(handler http.Handler, resolver request.RequestInfoResolver) http.Handler

WithPanicRecovery wraps an http Handler to recover and log panics (except in the special case of http.ErrAbortHandler panics, which suppress logging).

func WithPriorityAndFairness

func WithPriorityAndFairness(
	handler http.Handler,
	longRunningRequestCheck apirequest.LongRunningRequestCheck,
	fcIfc utilflowcontrol.Interface,
	workEstimator flowcontrolrequest.WorkEstimatorFunc,
) http.Handler

WithPriorityAndFairness limits the number of in-flight requests in a fine-grained way.

func WithProbabilisticGoaway

func WithProbabilisticGoaway(inner http.Handler, chance float64) http.Handler

WithProbabilisticGoaway returns an http.Handler that send GOAWAY probabilistically according to the given chance for HTTP2 requests. After client receive GOAWAY, the in-flight long-running requests will not be influenced, and the new requests will use a new TCP connection to re-balancing to another server behind the load balance.

func WithRetryAfter

func WithRetryAfter(handler http.Handler, shutdownDelayDurationElapsedCh <-chan struct{}) http.Handler

WithRetryAfter rejects any incoming new request(s) with a 429 if the specified shutdownDelayDurationElapsedFn channel is closed

It includes new request(s) on a new or an existing TCP connection Any new request(s) arriving after shutdownDelayDurationElapsedFn is closed are replied with a 429 and the following response headers:

  • 'Retry-After: N` (so client can retry after N seconds, hopefully on a new apiserver instance)
  • 'Connection: close': tear down the TCP connection

TODO: is there a way to merge WithWaitGroup and this filter?

func WithTimeout

func WithTimeout(h http.Handler, timeoutFunc timeoutFunc) http.Handler

WithTimeout returns an http.Handler that runs h with a timeout determined by timeoutFunc. The new http.Handler calls h.ServeHTTP to handle each request, but if a call runs for longer than its time limit, the handler responds with a 504 Gateway Timeout error and the message provided. (If msg is empty, a suitable default message will be sent.) After the handler times out, writes by h to its http.ResponseWriter will return http.ErrHandlerTimeout. If timeoutFunc returns a nil timeout channel, no timeout will be enforced. recordFn is a function that will be invoked whenever a timeout happens.

func WithTimeoutForNonLongRunningRequests

func WithTimeoutForNonLongRunningRequests(handler http.Handler, longRunning apirequest.LongRunningRequestCheck) http.Handler

WithTimeoutForNonLongRunningRequests times out non-long-running requests after the time given by timeout.

func WithWaitGroup

func WithWaitGroup(handler http.Handler, longRunning apirequest.LongRunningRequestCheck, wg *utilwaitgroup.SafeWaitGroup) http.Handler

WithWaitGroup adds all non long-running requests to wait group, which is used for graceful shutdown.

Types

type GoawayDecider

type GoawayDecider interface {
	Goaway(r *http.Request) bool
}

GoawayDecider decides if server should send a GOAWAY

type PriorityAndFairnessClassification

type PriorityAndFairnessClassification struct {
	FlowSchemaName    string
	FlowSchemaUID     apitypes.UID
	PriorityLevelName string
	PriorityLevelUID  apitypes.UID
}

PriorityAndFairnessClassification identifies the results of classification for API Priority and Fairness

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL