backoff

package
v1.1.129 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ComposeResourceKey

func ComposeResourceKey(o client.Object) string

func GetComputeResourceAndQuantity added in v1.1.88

func GetComputeResourceAndQuantity(err error, resourceRegex *regexp.Regexp) v1.ResourceList

func IsBackOffError added in v0.7.0

func IsBackOffError(err error) bool

func IsResourceQuotaExceeded

func IsResourceQuotaExceeded(err error) bool

func IsResourceRequestsEligible added in v1.1.88

func IsResourceRequestsEligible(err error) bool

Types

type AtomicTime added in v0.7.0

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

AtomicTime represents an atomic.Value that stores time.Time.

func NewAtomicTime added in v0.7.0

func NewAtomicTime(t time.Time) AtomicTime

Creates a new Atomic time.Time

func (*AtomicTime) Load added in v0.7.0

func (a *AtomicTime) Load() time.Time

Loads the underlying time.Time.

func (*AtomicTime) Store added in v0.7.0

func (a *AtomicTime) Store(t time.Time)

Stores time.Time to the underlying atomic.Value

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) 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
	MaxBackOffDuration time.Duration

	// Mutable fields
	BackOffExponent  stdAtomic.Uint32
	NextEligibleTime AtomicTime
}

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

type SyncResourceList added in v0.14.9

type SyncResourceList struct {
	sync.Map
}

SyncResourceList is a thread-safe Map. It's meant to replace v1.ResourceList for concurrency-sensitive code.

func NewSyncResourceList added in v0.14.9

func NewSyncResourceList() *SyncResourceList

NewSyncResourceList creates a thread-safe map to store resource names and resource quantities. Equivalent to v1.ResourceList but offering concurrent-safe operations.

func (*SyncResourceList) AddResourceList added in v0.14.9

func (s *SyncResourceList) AddResourceList(list v1.ResourceList) *SyncResourceList

AddResourceList stores a list into the sync map.

func (*SyncResourceList) AsResourceList added in v0.14.9

func (s *SyncResourceList) AsResourceList() v1.ResourceList

AsResourceList serializes a snapshot of the sync map into a v1.ResourceList

func (*SyncResourceList) Load added in v0.14.9

func (s *SyncResourceList) Load(resourceName v1.ResourceName) (quantity resource.Quantity, found bool)

Load loads a resource quantity if one exists.

func (*SyncResourceList) Range added in v0.14.9

func (s *SyncResourceList) Range(visitor func(key v1.ResourceName, value resource.Quantity) bool)

Range iterates over all the entries of the list in a non-sorted non-deterministic order.

func (*SyncResourceList) Store added in v0.14.9

func (s *SyncResourceList) Store(resourceName v1.ResourceName, quantity resource.Quantity)

Store stores the value in the map overriding existing value or adding a new one of one doesn't exist.

func (*SyncResourceList) String added in v0.14.9

func (s *SyncResourceList) String() string

String returns a formatted string of some snapshot of the map ordered by keys.

Jump to

Keyboard shortcuts

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