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:87

Create a new WorkQueue instance

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:76

Base delay


concurrency​

protected concurrency: number

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

Concurrency


dirty​

protected dirty: Set<string>

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

keys added while processed


failures​

protected failures: Map<string, number>

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

Failures


handler​

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

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

process a key

Parameters​

key​

string

Returns​

Promise<WorkResult>


idle​

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

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

Idle

Returns​

void


maxDelay​

protected maxDelay: number

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

Max delay


options​

protected options: WorkQueueOptions = {}

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

concurrency and backoff


processing​

protected processing: Set<string>

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

Processing


queue​

protected queue: string[] = []

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

Queue


queued​

protected queued: Set<string>

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

Queued


stopped​

protected stopped: boolean = false

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

Stopped


timers​

protected timers: Map<string, Timeout>

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

Timers

Accessors​

depth​

Get Signature​

get depth(): number

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

Get the keys waiting to be processed

Returns​

number

the keys waiting to be processed

Methods​

add()​

add(key): void

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

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:127

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:156

Drain operation

Returns​

Promise<void>

once no key is queued nor processed


process()​

protected process(key): Promise<void>

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

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:164

Start processing the queued keys, up to the concurrency

Returns​

void


stop()​

stop(): Promise<void>

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

Stop processing: the pending keys are dropped

Returns​

Promise<void>

once the keys being processed are done