backoff

package
v0.1.32 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2020 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComposeResourceKey

func ComposeResourceKey(o k8s.Resource) string

func GetComputeResourceAndQuantityRequested

func GetComputeResourceAndQuantityRequested(err error) v1.ResourceList

func IsBackoffError

func IsBackoffError(err error) bool

func IsResourceQuotaExceeded

func IsResourceQuotaExceeded(err error) bool

Types

type ComputeResourceAwareBackOffHandler

type ComputeResourceAwareBackOffHandler struct {
	*SimpleBackOffBlocker
	*ComputeResourceCeilings
}

ComputeResourceAwareBackOffHandler is an exponential back-off handler that also keeps track of the resource ceilings of the operations that are blocked or failed due to resource insufficiency

func (*ComputeResourceAwareBackOffHandler) Handle

func (h *ComputeResourceAwareBackOffHandler) Handle(ctx context.Context, operation func() error, requestedResourceList v1.ResourceList) error

Act based on current backoff interval and set the next one accordingly

func (*ComputeResourceAwareBackOffHandler) IsActive

type ComputeResourceCeilings

type ComputeResourceCeilings struct {
	// contains filtered or unexported fields
}

type Controller

type Controller struct {
	// Controller.Clock allows the use of fake clock when testing
	Clock clock.Clock
	// contains filtered or unexported fields
}

Controller is a name-spaced collection of back-off handlers

func NewController

func NewController(ctx context.Context) *Controller

func (*Controller) CreateBackOffHandler

func (m *Controller) CreateBackOffHandler(ctx context.Context, key string, backOffBaseSecond int, maxBackOffDuration time.Duration) *ComputeResourceAwareBackOffHandler

func (*Controller) GetBackOffHandler

func (m *Controller) GetBackOffHandler(key string) (*ComputeResourceAwareBackOffHandler, bool)

func (*Controller) GetOrCreateHandler

func (m *Controller) GetOrCreateHandler(ctx context.Context, key string, backOffBaseSecond int, maxBackOffDuration time.Duration) *ComputeResourceAwareBackOffHandler

type HandlerMap

type HandlerMap struct {
	sync.Map
}

func (*HandlerMap) Get

func (*HandlerMap) Set

type SimpleBackOffBlocker

type SimpleBackOffBlocker struct {
	Clock              clock.Clock
	BackOffBaseSecond  int
	BackOffExponent    int
	NextEligibleTime   time.Time
	MaxBackOffDuration time.Duration
}

SimpleBackOffBlocker is a simple exponential back-off timer that keeps track of the back-off period

Jump to

Keyboard shortcuts

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