Documentation ¶
Index ¶
- Constants
- type ActionFunc
- type RateLimitedTimedQueue
- func (q *RateLimitedTimedQueue) Add(value string, uid interface{}) bool
- func (q *RateLimitedTimedQueue) Clear()
- func (q *RateLimitedTimedQueue) Remove(value string) bool
- func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32)
- func (q *RateLimitedTimedQueue) Try(logger klog.Logger, fn ActionFunc)
- type TimedQueue
- type TimedValue
- type UniqueQueue
- func (q *UniqueQueue) Add(value TimedValue) bool
- func (q *UniqueQueue) Clear()
- func (q *UniqueQueue) Get() (TimedValue, bool)
- func (q *UniqueQueue) Head() (TimedValue, bool)
- func (q *UniqueQueue) Remove(value string) bool
- func (q *UniqueQueue) RemoveFromQueue(value string) bool
- func (q *UniqueQueue) Replace(value TimedValue) bool
Constants ¶
const ( // NodeHealthUpdateRetry controls the number of retries of writing // node health update. NodeHealthUpdateRetry = 5 // NodeEvictionPeriod controls how often NodeController will try to // evict Pods from non-responsive Nodes. NodeEvictionPeriod = 100 * time.Millisecond // EvictionRateLimiterBurst is the burst value for all eviction rate // limiters EvictionRateLimiterBurst = 1 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ActionFunc ¶
type ActionFunc func(TimedValue) (bool, time.Duration)
ActionFunc takes a timed value and returns false if the item must be retried, with an optional time.Duration if some minimum wait interval should be used.
type RateLimitedTimedQueue ¶
type RateLimitedTimedQueue struct {
// contains filtered or unexported fields
}
RateLimitedTimedQueue is a unique item priority queue ordered by the expected next time of execution. It is also rate limited.
func NewRateLimitedTimedQueue ¶
func NewRateLimitedTimedQueue(limiter flowcontrol.RateLimiter) *RateLimitedTimedQueue
NewRateLimitedTimedQueue creates new queue which will use given RateLimiter to oversee execution.
func (*RateLimitedTimedQueue) Add ¶
func (q *RateLimitedTimedQueue) Add(value string, uid interface{}) bool
Add value to the queue to be processed. Won't add the same value(comparison by value) a second time if it was already added and not removed.
func (*RateLimitedTimedQueue) Clear ¶
func (q *RateLimitedTimedQueue) Clear()
Clear removes all items from the queue
func (*RateLimitedTimedQueue) Remove ¶
func (q *RateLimitedTimedQueue) Remove(value string) bool
Remove Node from the Evictor. The Node won't be processed until added again.
func (*RateLimitedTimedQueue) SwapLimiter ¶
func (q *RateLimitedTimedQueue) SwapLimiter(newQPS float32)
SwapLimiter safely swaps current limiter for this queue with the passed one if capacities or qps's differ.
func (*RateLimitedTimedQueue) Try ¶
func (q *RateLimitedTimedQueue) Try(logger klog.Logger, fn ActionFunc)
Try processes the queue.Ends prematurely if RateLimiter forbids an action and leak is true. Otherwise, requeues the item to be processed. Each value is processed once if fn returns true, otherwise it is added back to the queue. The returned remaining is used to identify the minimum time to execute the next item in the queue. The same value is processed only once unless Remove is explicitly called on it (it's done by the cancelPodEviction function in NodeController when Node becomes Ready again) TODO: figure out a good way to do garbage collection for all Nodes that were removed from the cluster.
type TimedQueue ¶
type TimedQueue []*TimedValue
TimedQueue is a priority heap where the lowest ProcessAt is at the front of the queue
func (TimedQueue) Less ¶
func (h TimedQueue) Less(i, j int) bool
Less returns true if queue[i] < queue[j].
func (*TimedQueue) Push ¶
func (h *TimedQueue) Push(x interface{})
Push a new TimedValue on to the queue.
type TimedValue ¶
type TimedValue struct { Value string // UID could be anything that helps identify the value UID interface{} AddedAt time.Time ProcessAt time.Time }
TimedValue is a value that should be processed at a designated time.
type UniqueQueue ¶
type UniqueQueue struct {
// contains filtered or unexported fields
}
UniqueQueue is a FIFO queue which additionally guarantees that any element can be added only once until it is removed.
func (*UniqueQueue) Add ¶
func (q *UniqueQueue) Add(value TimedValue) bool
Add a new value to the queue if it wasn't added before, or was explicitly removed by the Remove call. Returns true if new value was added.
func (*UniqueQueue) Clear ¶
func (q *UniqueQueue) Clear()
Clear removes all items from the queue and duplication preventing set.
func (*UniqueQueue) Get ¶
func (q *UniqueQueue) Get() (TimedValue, bool)
Get returns the oldest added value that wasn't returned yet.
func (*UniqueQueue) Head ¶
func (q *UniqueQueue) Head() (TimedValue, bool)
Head returns the oldest added value that wasn't returned yet without removing it.
func (*UniqueQueue) Remove ¶
func (q *UniqueQueue) Remove(value string) bool
Remove the value from the queue, so Get() call won't return it, and allow subsequent addition of the given value. If the value is not present does nothing and returns false.
func (*UniqueQueue) RemoveFromQueue ¶
func (q *UniqueQueue) RemoveFromQueue(value string) bool
RemoveFromQueue the value from the queue, but keeps it in the set, so it won't be added second time. Returns true if something was removed.
func (*UniqueQueue) Replace ¶
func (q *UniqueQueue) Replace(value TimedValue) bool
Replace replaces an existing value in the queue if it already exists, otherwise it does nothing. Returns true if the item was found.