Skip to main content

WorkQueue

@webda/kubernetes


Class: WorkQueue

Defined in: kubernetes/src/operator/workqueue.ts:38

Queue of keys to process, as the work queue of a Kubernetes controller

A key is never processed twice at the same time: added while queued it is queued once, added while processed it is processed again once done. A failure processes the key again after an exponential backoff, a result can ask to process it again after a delay.

Constructors​

Constructor​

new WorkQueue(handler, options?): WorkQueue

Defined in: kubernetes/src/operator/workqueue.ts:56

Parameters​

handler​

(key) => Promise<WorkResult>

process a key

options?​

WorkQueueOptions = {}

concurrency and backoff

Returns​

WorkQueue

Properties​

baseDelay​

protected baseDelay: number

Defined in: kubernetes/src/operator/workqueue.ts:49


concurrency​

protected concurrency: number

Defined in: kubernetes/src/operator/workqueue.ts:48


dirty​

protected dirty: Set<string>

Defined in: kubernetes/src/operator/workqueue.ts:43

keys added while processed


failures​

protected failures: Map<string, number>

Defined in: kubernetes/src/operator/workqueue.ts:44


handler​

protected handler: (key) => Promise<WorkResult>

Defined in: kubernetes/src/operator/workqueue.ts:57

process a key

Parameters​

key​

string

Returns​

Promise<WorkResult>


idle​

protected idle: (() => void)[] = []

Defined in: kubernetes/src/operator/workqueue.ts:47

Returns​

void


maxDelay​

protected maxDelay: number

Defined in: kubernetes/src/operator/workqueue.ts:50


options​

protected options: WorkQueueOptions = {}

Defined in: kubernetes/src/operator/workqueue.ts:58

concurrency and backoff


processing​

protected processing: Set<string>

Defined in: kubernetes/src/operator/workqueue.ts:41


queue​

protected queue: string[] = []

Defined in: kubernetes/src/operator/workqueue.ts:39


queued​

protected queued: Set<string>

Defined in: kubernetes/src/operator/workqueue.ts:40


stopped​

protected stopped: boolean = false

Defined in: kubernetes/src/operator/workqueue.ts:46


timers​

protected timers: Map<string, Timeout>

Defined in: kubernetes/src/operator/workqueue.ts:45

Accessors​

depth​

Get Signature​

get depth(): number

Defined in: kubernetes/src/operator/workqueue.ts:68

Returns​

number

the keys waiting to be processed

Methods​

add()​

add(key): void

Defined in: kubernetes/src/operator/workqueue.ts:76

Process a key as soon as possible

Parameters​

key​

string

the key

Returns​

void


addAfter()​

addAfter(key, delay): void

Defined in: kubernetes/src/operator/workqueue.ts:95

Process a key after a delay, unless it is added before

Parameters​

key​

string

the key

delay​

number

milliseconds

Returns​

void


drain()​

drain(): Promise<void>

Defined in: kubernetes/src/operator/workqueue.ts:123

Returns​

Promise<void>

once no key is queued nor processed


process()​

protected process(key): Promise<void>

Defined in: kubernetes/src/operator/workqueue.ts:147

Process a key, then schedule it again if needed

Parameters​

key​

string

the key

Returns​

Promise<void>


pump()​

protected pump(): void

Defined in: kubernetes/src/operator/workqueue.ts:131

Start processing the queued keys, up to the concurrency

Returns​

void


stop()​

stop(): Promise<void>

Defined in: kubernetes/src/operator/workqueue.ts:110

Stop processing: the pending keys are dropped

Returns​

Promise<void>

once the keys being processed are done