@nxtedition/scheduler 4.1.8 → 4.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -28
- package/lib/limiter.d.ts.map +1 -1
- package/lib/limiter.js +138 -20
- package/lib/limiter.js.map +1 -1
- package/lib/scheduler.d.ts +1 -0
- package/lib/scheduler.d.ts.map +1 -1
- package/lib/scheduler.js +23 -0
- package/lib/scheduler.js.map +1 -1
- package/package.json +3 -4
package/README.md
CHANGED
|
@@ -186,11 +186,11 @@ const { running, pending, queues } = scheduler.stats
|
|
|
186
186
|
|
|
187
187
|
### `scheduler.run(fn, priority?, opaque?): Promise<T>`
|
|
188
188
|
|
|
189
|
-
Execute `fn` within the scheduler. Returns a promise that resolves with the return value of `fn`.
|
|
189
|
+
Execute `fn` within the scheduler. Returns a promise that resolves with the return value of `fn`. After the scheduler has been disposed, `run()` rejects with `Error('Scheduler is disposed')` instead of hanging.
|
|
190
190
|
|
|
191
|
-
### `scheduler.acquire(fn, priority?, opaque?):
|
|
191
|
+
### `scheduler.acquire(fn, priority?, opaque?): boolean`
|
|
192
192
|
|
|
193
|
-
Low-level task acquisition. You **must** call `scheduler.release()` when
|
|
193
|
+
Low-level task acquisition. Returns `true` if a slot was available and `fn` ran synchronously, or `false` if the task was queued (also `false` if the scheduler has been disposed). You **must** call `scheduler.release()` when `fn` completes.
|
|
194
194
|
|
|
195
195
|
### `scheduler.release(): void`
|
|
196
196
|
|
|
@@ -202,7 +202,7 @@ Create shared state for cross-worker scheduling.
|
|
|
202
202
|
|
|
203
203
|
### `scheduler[Symbol.dispose]()`
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
Disposes the scheduler: releases any global slots it still holds (shared mode), drops the reference to a pending shared-mode `Atomics.waitAsync`, and makes all further calls inert (`acquire` / `tryAcquire` return `false`; `run` rejects). Use when abandoning a shared-mode Scheduler with tasks still queued so the instance and its parked wait can be garbage-collected (it is otherwise kept alive until process exit so its held slots can be released). Works with `using`.
|
|
206
206
|
|
|
207
207
|
### `parsePriority(value): number`
|
|
208
208
|
|
|
@@ -210,51 +210,72 @@ Parse a string or number into a normalized priority value.
|
|
|
210
210
|
|
|
211
211
|
---
|
|
212
212
|
|
|
213
|
-
##
|
|
213
|
+
## Limiter
|
|
214
214
|
|
|
215
|
-
`
|
|
215
|
+
`Limiter` is a token-bucket rate limiter that controls how many **tokens per second** are processed — typically bytes, but any integer unit works. It shares the same priority system as `Scheduler`.
|
|
216
|
+
|
|
217
|
+
> Previously exported as `Throttle`. The `Throttle` alias is retained for backward compatibility but is **deprecated** — prefer `Limiter`.
|
|
218
|
+
|
|
219
|
+
Tokens refill automatically: the constructor starts an internal `unref()`'d timer, and refills are also triggered lazily from `consume()` / `tryConsume()`. There is no manual refill step.
|
|
216
220
|
|
|
217
221
|
### Basic
|
|
218
222
|
|
|
219
223
|
```js
|
|
220
|
-
import {
|
|
224
|
+
import { Limiter } from '@nxtedition/scheduler'
|
|
221
225
|
|
|
222
|
-
// Allow 1 MB/s
|
|
223
|
-
const
|
|
226
|
+
// Allow 1 MB/s (tokens are bytes here)
|
|
227
|
+
const limiter = new Limiter({ tokensPerSecond: 1_000_000 })
|
|
224
228
|
|
|
225
|
-
//
|
|
226
|
-
|
|
229
|
+
// Consume `chunk.length` tokens at normal priority, running the callback when available
|
|
230
|
+
limiter.consume(() => send(chunk), chunk.length)
|
|
227
231
|
```
|
|
228
232
|
|
|
229
|
-
### Multi-Worker Coordination
|
|
230
|
-
|
|
231
233
|
### Streaming
|
|
232
234
|
|
|
233
|
-
`
|
|
235
|
+
`limiter.stream()` returns a Node.js `Transform` stream that enforces backpressure — it won't pass a chunk through until enough tokens are available. Each chunk consumes `chunk.length` tokens:
|
|
234
236
|
|
|
235
237
|
```js
|
|
236
238
|
import { createReadStream, createWriteStream } from 'node:fs'
|
|
237
239
|
import { pipeline } from 'node:stream/promises'
|
|
238
240
|
|
|
239
|
-
const
|
|
240
|
-
setInterval(() => throttle.refill(), 10)
|
|
241
|
+
const limiter = new Limiter({ tokensPerSecond: 1_000_000 }) // 1 MB/s
|
|
241
242
|
|
|
242
|
-
await pipeline(createReadStream('input.mp4'),
|
|
243
|
+
await pipeline(createReadStream('input.mp4'), limiter.stream(), createWriteStream('output.mp4'))
|
|
243
244
|
```
|
|
244
245
|
|
|
245
246
|
### Priority
|
|
246
247
|
|
|
247
|
-
Both `
|
|
248
|
+
Both `consume()` and `stream()` accept a priority. Higher-priority work drains first when tokens are available:
|
|
248
249
|
|
|
249
250
|
```js
|
|
250
251
|
// Low-priority stream (yields to higher-priority work)
|
|
251
|
-
const stream =
|
|
252
|
+
const stream = limiter.stream('low')
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Multi-Worker Coordination
|
|
256
|
+
|
|
257
|
+
Share a token bucket across worker threads using `SharedArrayBuffer`, exactly like `Scheduler`:
|
|
258
|
+
|
|
259
|
+
```js
|
|
260
|
+
// Main thread
|
|
261
|
+
import { Limiter } from '@nxtedition/scheduler'
|
|
262
|
+
import { Worker } from 'node:worker_threads'
|
|
263
|
+
|
|
264
|
+
const sharedState = Limiter.makeSharedState(1_000_000) // 1 MB/s shared across all workers
|
|
265
|
+
new Worker('./worker.js', { workerData: sharedState })
|
|
266
|
+
|
|
267
|
+
// Worker thread
|
|
268
|
+
import { Limiter } from '@nxtedition/scheduler'
|
|
269
|
+
import { workerData } from 'node:worker_threads'
|
|
270
|
+
|
|
271
|
+
const limiter = new Limiter(workerData)
|
|
272
|
+
limiter.consume(() => send(chunk), chunk.length)
|
|
252
273
|
```
|
|
253
274
|
|
|
254
275
|
### Low-Level API
|
|
255
276
|
|
|
256
277
|
```js
|
|
257
|
-
|
|
278
|
+
const ran = limiter.consume(
|
|
258
279
|
() => {
|
|
259
280
|
sendPacket(data)
|
|
260
281
|
},
|
|
@@ -263,22 +284,32 @@ throttle.acquire(
|
|
|
263
284
|
)
|
|
264
285
|
```
|
|
265
286
|
|
|
266
|
-
`
|
|
287
|
+
`consume` returns `true` if the callback ran immediately (tokens were available and nothing was queued ahead of it), or `false` if it was queued.
|
|
267
288
|
|
|
268
289
|
## API
|
|
269
290
|
|
|
270
|
-
### `new
|
|
291
|
+
### `new Limiter(opts)`
|
|
292
|
+
|
|
293
|
+
- `opts.tokensPerSecond` — tokens (e.g. bytes) per second. **Required**; must be a positive integer that fits in a signed 32-bit integer (1 … 2,147,483,647), since tokens are tracked as `Int32`. `0`, negative, non-integer, `NaN`, `Infinity`, and values above 2,147,483,647 all throw.
|
|
294
|
+
- `opts` may also be a `SharedArrayBuffer` created by `Limiter.makeSharedState(tokensPerSecond)`.
|
|
295
|
+
|
|
296
|
+
### `limiter.consume(fn, bytes, priority?, opaque?): boolean`
|
|
297
|
+
|
|
298
|
+
Consume `bytes` tokens, running `fn(opaque)` when they are available. Returns `true` if `fn` ran immediately, `false` if it was queued. `opaque` is passed through to `fn` on both paths.
|
|
299
|
+
|
|
300
|
+
`bytes` must be a non-negative integer no larger than 2,147,483,647 (the signed Int32 max — tokens are tracked as `Int32`); negative, non-integer, `NaN`, `Infinity`, and out-of-range values throw (a negative or wrapping value would otherwise _add_ tokens via `Atomics.sub` and corrupt the shared bucket). A `bytes` of `0` consumes no tokens and never waits on the bucket. It runs immediately, returning `true`, only when nothing is queued at all (`pending === 0`); otherwise `consume` returns `false`, but the task is still serviced on the very next drain (which the call itself triggers) regardless of the token balance — even while the bucket is empty or in debt. So a weightless task is never blocked by a starved bucket, and it can drain ahead of token-starved work (priority is still honored among tasks that fit). A request larger than `tokensPerSecond` (the bucket's capacity) can never fit a full bucket; rather than stalling forever it is admitted once the bucket fills, drawing the bucket into debt that subsequent refills repay before any other work drains — i.e. it is throttled, not dropped.
|
|
301
|
+
|
|
302
|
+
### `limiter.tryConsume(bytes): boolean`
|
|
271
303
|
|
|
272
|
-
- `
|
|
273
|
-
- `opts` may also be a `SharedArrayBuffer` created by `Throttle.makeSharedState()`
|
|
304
|
+
Non-blocking. Consumes `bytes` and returns `true` only if enough tokens are available right now and nothing is queued; otherwise returns `false` without queuing.
|
|
274
305
|
|
|
275
|
-
### `
|
|
306
|
+
### `limiter.stream(priority?, options?): Transform`
|
|
276
307
|
|
|
277
|
-
|
|
308
|
+
Returns a `Transform` stream that rate-limits data passing through it. Each chunk consumes `chunk.length` tokens; a chunk with no non-negative-integer `length` (e.g. in `objectMode`) is treated as weightless (0 tokens) — it never waits on tokens, though it still preserves the limiter's queue ordering (if other work is already queued, it drains in turn rather than jumping ahead). `options` is forwarded to the underlying `Transform` (e.g. `objectMode`, `highWaterMark`). Destroying the stream while a chunk is still queued in the limiter does not push into the dead stream.
|
|
278
309
|
|
|
279
|
-
### `
|
|
310
|
+
### `Limiter.makeSharedState(tokensPerSecond): SharedArrayBuffer`
|
|
280
311
|
|
|
281
|
-
|
|
312
|
+
Create shared state for cross-worker rate limiting.
|
|
282
313
|
|
|
283
314
|
---
|
|
284
315
|
|
package/lib/limiter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limiter.d.ts","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAuC,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"limiter.d.ts","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAuC,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AA0BtF,qBAAa,OAAQ,SAAQ,KAAK;;IAChC,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,OAAO,CAAI;IAInB,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,MAAM;IAS9C,IAAI,KAAK;;;;;;MAMR;IAED,IAAI,eAAe,WAElB;gBAEW,IAAI,EAAE,iBAAiB,GAAG;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;IAqBjE,MAAM,CAAC,QAAQ,GAAE,QAAuB,EAAE,OAAO,CAAC,EAAE,gBAAgB;IAoBpE,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO;IACvE,OAAO,CAAC,CAAC,EACP,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,MAAM,EAAE,CAAC,GACR,OAAO;IAsCV,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CA6LnC"}
|
package/lib/limiter.js
CHANGED
|
@@ -5,14 +5,26 @@ const TOKENS_INDEX = 16; // separate cache line to avoid false sharing
|
|
|
5
5
|
const REFILL_INDEX = 32; // separate cache line to avoid false sharing
|
|
6
6
|
const MAGIC_INDEX = 8; // within first cache line, between LIMIT and TOKENS
|
|
7
7
|
const LIMITER_MAGIC = 0x4c494d54; // ASCII "LIMT" — sanity-check sentinel written by makeSharedState
|
|
8
|
+
// Tokens, the rate, and per-task byte counts are all stored in / operated on as Int32
|
|
9
|
+
// (the shared TOKENS slot and Atomics.add/sub). A rate above this wraps to a negative
|
|
10
|
+
// value on store and silently breaks the bucket (it can never accrue), so reject it up
|
|
11
|
+
// front rather than fail mysteriously at runtime.
|
|
12
|
+
const MAX_TOKENS = 0x7fffffff; // 2_147_483_647
|
|
13
|
+
function validateRate(tokensPerSecond) {
|
|
14
|
+
if (tokensPerSecond == null ||
|
|
15
|
+
!Number.isInteger(tokensPerSecond) ||
|
|
16
|
+
tokensPerSecond < 1 ||
|
|
17
|
+
tokensPerSecond > MAX_TOKENS) {
|
|
18
|
+
throw new Error('Invalid tokensPerSecond');
|
|
19
|
+
}
|
|
20
|
+
return tokensPerSecond;
|
|
21
|
+
}
|
|
8
22
|
export class Limiter extends Queue {
|
|
9
23
|
stateView;
|
|
10
24
|
pending = 0;
|
|
11
25
|
#refillTimer;
|
|
12
26
|
static makeSharedState(tokensPerSecond) {
|
|
13
|
-
|
|
14
|
-
throw new Error('Invalid tokensPerSecond');
|
|
15
|
-
}
|
|
27
|
+
validateRate(tokensPerSecond);
|
|
16
28
|
const stateBuffer = new SharedArrayBuffer(192); // 3 cache lines, one per field
|
|
17
29
|
const stateView = new Int32Array(stateBuffer);
|
|
18
30
|
Atomics.store(stateView, MAGIC_INDEX, LIMITER_MAGIC);
|
|
@@ -41,10 +53,7 @@ export class Limiter extends Queue {
|
|
|
41
53
|
this.stateView = new Int32Array(opts);
|
|
42
54
|
}
|
|
43
55
|
else {
|
|
44
|
-
const tokensPerSecond = opts?.tokensPerSecond;
|
|
45
|
-
if (tokensPerSecond == null || !Number.isInteger(tokensPerSecond) || tokensPerSecond < 1) {
|
|
46
|
-
throw new Error('Invalid tokensPerSecond');
|
|
47
|
-
}
|
|
56
|
+
const tokensPerSecond = validateRate(opts?.tokensPerSecond);
|
|
48
57
|
this.stateView = new Int32Array(64);
|
|
49
58
|
Atomics.store(this.stateView, LIMIT_INDEX, tokensPerSecond);
|
|
50
59
|
}
|
|
@@ -53,13 +62,31 @@ export class Limiter extends Queue {
|
|
|
53
62
|
stream(priority = Queue.NORMAL, options) {
|
|
54
63
|
return new Transform({
|
|
55
64
|
...options,
|
|
65
|
+
// `chunk` is typed `unknown`, not `Buffer`: in object mode it can be any value —
|
|
66
|
+
// including a nullish one (e.g. `stream.write(undefined)` in object mode reaches the
|
|
67
|
+
// transform), so the `length` read is guarded with `?.` to avoid a TypeError. The
|
|
68
|
+
// byte count comes from a non-negative integer `length` when present; anything else
|
|
69
|
+
// (object-mode values, nullish chunks, a missing/float length) is treated as
|
|
70
|
+
// weightless (0 tokens) instead of feeding `undefined`/a float into the token math.
|
|
71
|
+
// If the stream is destroyed while the chunk is still queued in the limiter, invoking
|
|
72
|
+
// this callback later is harmless — a destroyed Transform drops the push, no `data`.
|
|
56
73
|
transform: (chunk, _encoding, callback) => {
|
|
74
|
+
const len = chunk?.length;
|
|
75
|
+
const bytes = typeof len === 'number' && Number.isInteger(len) && len >= 0 ? len : 0;
|
|
57
76
|
// eslint-disable-next-line typescript-eslint/no-unsafe-argument
|
|
58
|
-
this.consume((chunk) => callback(null, chunk),
|
|
77
|
+
this.consume((chunk) => callback(null, chunk), bytes, priority, chunk);
|
|
59
78
|
},
|
|
60
79
|
});
|
|
61
80
|
}
|
|
62
81
|
consume(fn, bytes, priority = Queue.NORMAL, opaque) {
|
|
82
|
+
// bytes must be a non-negative Int32 integer: it is applied to Atomics.sub on an
|
|
83
|
+
// Int32Array, so a negative value (or one that wraps past the Int32 max) *adds*
|
|
84
|
+
// tokens — corrupting the shared bucket for every worker — and NaN/Infinity can never
|
|
85
|
+
// be satisfied (the task would queue forever). Non-integers are rejected too, since
|
|
86
|
+
// Atomics would silently truncate them.
|
|
87
|
+
if (!Number.isInteger(bytes) || bytes < 0 || bytes > MAX_TOKENS) {
|
|
88
|
+
throw new Error('Invalid bytes');
|
|
89
|
+
}
|
|
63
90
|
if (priority == null) {
|
|
64
91
|
priority = Queue.NORMAL;
|
|
65
92
|
}
|
|
@@ -76,6 +103,10 @@ export class Limiter extends Queue {
|
|
|
76
103
|
return false;
|
|
77
104
|
}
|
|
78
105
|
tryConsume(bytes) {
|
|
106
|
+
// Same contract as consume(): a non-negative Int32 integer (see consume() for why).
|
|
107
|
+
if (!Number.isInteger(bytes) || bytes < 0 || bytes > MAX_TOKENS) {
|
|
108
|
+
throw new Error('Invalid bytes');
|
|
109
|
+
}
|
|
79
110
|
if (this.stateView[TOKENS_INDEX] < bytes) {
|
|
80
111
|
this.#refill();
|
|
81
112
|
}
|
|
@@ -91,6 +122,12 @@ export class Limiter extends Queue {
|
|
|
91
122
|
// have passed for one of them. Given that the concurrency limit is a soft limit,
|
|
92
123
|
// this is not a problem and will just mean that we might briefly have tokens < 0
|
|
93
124
|
// until the next refill repays the debt.
|
|
125
|
+
//
|
|
126
|
+
// Note: this is a strict, non-blocking check — a request larger than the bucket's
|
|
127
|
+
// capacity (tokensPerSecond) is NEVER granted here (it can never be covered). Such
|
|
128
|
+
// oversized requests only make progress via the queued drain loop in #refill(), which
|
|
129
|
+
// forces them through into debt once the bucket is full. This keeps tryConsume() a
|
|
130
|
+
// true non-blocking poll and never grants more than the bucket can hold on the fast path.
|
|
94
131
|
if (this.stateView[TOKENS_INDEX] < bytes) {
|
|
95
132
|
return false;
|
|
96
133
|
}
|
|
@@ -98,22 +135,74 @@ export class Limiter extends Queue {
|
|
|
98
135
|
return true;
|
|
99
136
|
}
|
|
100
137
|
#refill() {
|
|
138
|
+
const rate = this.tokensPerSecond;
|
|
101
139
|
const currentToken = this.stateView[TOKENS_INDEX];
|
|
102
140
|
const refillTime = this.stateView[REFILL_INDEX];
|
|
103
|
-
//
|
|
104
|
-
// Int32
|
|
141
|
+
// performance.now() | 0 is integer ms since process start, kept in Int32 range so it
|
|
142
|
+
// matches REFILL_INDEX's Int32 storage. Date.now() (~1.74 trillion) would overflow Int32.
|
|
105
143
|
const now = performance.now() | 0;
|
|
106
|
-
if (
|
|
107
|
-
|
|
108
|
-
//
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
144
|
+
if (refillTime === 0) {
|
|
145
|
+
// First refill anchors the clock and fills the bucket to capacity. CAS so that when
|
|
146
|
+
// multiple workers race the very first refill, only one of them performs the fill.
|
|
147
|
+
if (Atomics.compareExchange(this.stateView, REFILL_INDEX, 0, now) === 0) {
|
|
148
|
+
const fill = rate - currentToken;
|
|
149
|
+
if (fill > 0) {
|
|
150
|
+
Atomics.add(this.stateView, TOKENS_INDEX, fill);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else if (now !== refillTime) {
|
|
155
|
+
const room = rate - currentToken;
|
|
156
|
+
const elapsedMs = now - refillTime;
|
|
157
|
+
if (elapsedMs < 0 || room <= 0) {
|
|
158
|
+
// Negative elapsed = the Int32 ms counter wrapped (~24.8 days); room <= 0 = the
|
|
159
|
+
// bucket is already at/over capacity (a full bucket cannot bank time). Either way,
|
|
160
|
+
// re-anchor the clock to now and drop the carried fraction without crediting.
|
|
161
|
+
Atomics.compareExchange(this.stateView, REFILL_INDEX, refillTime, now);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Tokens accrue at `rate` per 1000ms. Credit only whole tokens and advance the
|
|
165
|
+
// clock by just the time those whole tokens represent — the leftover sub-token
|
|
166
|
+
// slice stays encoded as the residual (now - refillTime) gap and is carried
|
|
167
|
+
// forward to the next refill. This is why refillTime itself serves as the
|
|
168
|
+
// remainder: refills that yield < 1 whole token (e.g. a 100ms tick at
|
|
169
|
+
// tokensPerSecond < 10) leave the clock untouched so elapsed time keeps
|
|
170
|
+
// accumulating, instead of advancing and truncating the fraction away — which
|
|
171
|
+
// permanently starved low rates and made non-tick-multiple rates under-deliver.
|
|
172
|
+
let granted = Math.floor((elapsedMs * rate) / 1000);
|
|
173
|
+
if (granted > 0) {
|
|
174
|
+
let newRefillTime;
|
|
175
|
+
if (granted >= room) {
|
|
176
|
+
// Bucket fills this tick: clamp to capacity and snap the clock to now —
|
|
177
|
+
// overflow time cannot be banked.
|
|
178
|
+
granted = room;
|
|
179
|
+
newRefillTime = now;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// floor(granted * 1000 / rate) <= elapsedMs, so the clock never passes now;
|
|
183
|
+
// the un-advanced remainder (worth < one token) carries forward.
|
|
184
|
+
newRefillTime = refillTime + Math.floor((granted * 1000) / rate);
|
|
185
|
+
}
|
|
186
|
+
// Gate the credit on the REFILL CAS so concurrent refills across workers never
|
|
187
|
+
// double-count the same elapsed window: only the winner advances the clock and
|
|
188
|
+
// adds tokens.
|
|
189
|
+
if (Atomics.compareExchange(this.stateView, REFILL_INDEX, refillTime, newRefillTime) ===
|
|
190
|
+
refillTime) {
|
|
191
|
+
Atomics.add(this.stateView, TOKENS_INDEX, granted);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// granted === 0: leave refillTime untouched so the elapsed time keeps accruing
|
|
195
|
+
// until it is worth at least one whole token.
|
|
113
196
|
}
|
|
114
197
|
}
|
|
115
198
|
try {
|
|
116
|
-
|
|
199
|
+
// NB: this loop is intentionally NOT gated on `tokens > 0`. Weightless (0-byte)
|
|
200
|
+
// tasks always satisfy #tryConsumeTokens regardless of the token balance, so they
|
|
201
|
+
// must be able to drain even while the bucket is at 0 or in debt (e.g. after an
|
|
202
|
+
// oversized request was forced through) — gating on tokens would strand them for
|
|
203
|
+
// the whole debt-repayment window. When nothing else fits, the scan below returns
|
|
204
|
+
// promptly (it never force-dispatches unless the bucket is full), so this does not spin.
|
|
205
|
+
while (this.pending > 0) {
|
|
117
206
|
let queue = this.getNextQueue(NO_LIMITS, 0);
|
|
118
207
|
if (queue == null || queue.cnt === 0) {
|
|
119
208
|
break;
|
|
@@ -123,18 +212,34 @@ export class Limiter extends Queue {
|
|
|
123
212
|
// highest to lowest priority for any task whose byte requirement fits
|
|
124
213
|
// within available tokens (starvation prevention).
|
|
125
214
|
queue = null;
|
|
215
|
+
let highest = null;
|
|
126
216
|
for (let p = this.queues.length - 1; p >= 0; p--) {
|
|
127
217
|
const q = this.queues[p];
|
|
128
218
|
if (q.cnt === 0) {
|
|
129
219
|
continue;
|
|
130
220
|
}
|
|
221
|
+
if (highest === null) {
|
|
222
|
+
highest = q;
|
|
223
|
+
}
|
|
131
224
|
if (this.#tryConsumeTokens(q.arr[q.idx + 1])) {
|
|
132
225
|
queue = q;
|
|
133
226
|
break;
|
|
134
227
|
}
|
|
135
228
|
}
|
|
136
229
|
if (queue == null) {
|
|
137
|
-
|
|
230
|
+
// Nothing fits the tokens available right now. If the bucket is already full
|
|
231
|
+
// (at capacity — it can never hold more), every remaining task is larger than
|
|
232
|
+
// the bucket can ever cover, so waiting is pointless and they would stall
|
|
233
|
+
// forever. Force the highest-priority such task through into debt; the
|
|
234
|
+
// tokens < 0 result drops out of this loop and subsequent refills repay the
|
|
235
|
+
// debt before anything else drains — the correct throttle for an over-large unit.
|
|
236
|
+
if (highest !== null && this.stateView[TOKENS_INDEX] >= this.stateView[LIMIT_INDEX]) {
|
|
237
|
+
Atomics.sub(this.stateView, TOKENS_INDEX, highest.arr[highest.idx + 1]);
|
|
238
|
+
queue = highest;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
138
243
|
}
|
|
139
244
|
}
|
|
140
245
|
const fn = queue.arr[queue.idx];
|
|
@@ -153,7 +258,20 @@ export class Limiter extends Queue {
|
|
|
153
258
|
queue.arr.splice(0, queue.idx);
|
|
154
259
|
queue.idx = 0;
|
|
155
260
|
}
|
|
156
|
-
|
|
261
|
+
try {
|
|
262
|
+
fn(opaque);
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
// A queued callback threw. It has already been dequeued and its tokens
|
|
266
|
+
// accounted for, so the bucket state is consistent — isolate the failure:
|
|
267
|
+
// keep draining the remaining queued items and surface the error
|
|
268
|
+
// asynchronously (like any deferred callback), rather than letting it crash
|
|
269
|
+
// the timer-driven #refill or get mis-attributed to whatever consume()/
|
|
270
|
+
// tryConsume() call happened to trigger this drain.
|
|
271
|
+
queueMicrotask(() => {
|
|
272
|
+
throw err;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
157
275
|
}
|
|
158
276
|
}
|
|
159
277
|
finally {
|
package/lib/limiter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAiB,MAAM,YAAY,CAAA;AAEtF,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,YAAY,GAAG,EAAE,CAAA,CAAC,6CAA6C;AACrE,MAAM,YAAY,GAAG,EAAE,CAAA,CAAC,6CAA6C;AACrE,MAAM,WAAW,GAAG,CAAC,CAAA,CAAC,oDAAoD;AAC1E,MAAM,aAAa,GAAG,UAAU,CAAA,CAAC,kEAAkE;AAEnG,
|
|
1
|
+
{"version":3,"file":"limiter.js","sourceRoot":"","sources":["../src/limiter.ts"],"names":[],"mappings":"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"}
|
package/lib/scheduler.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare class Scheduler extends Queue {
|
|
|
43
43
|
acquire<U>(fn: (opaque: U) => unknown, priority: Priority | undefined, opaque: U): boolean;
|
|
44
44
|
tryAcquire(priority?: Priority): boolean;
|
|
45
45
|
release: () => void;
|
|
46
|
+
[Symbol.dispose](): void;
|
|
46
47
|
}
|
|
47
48
|
export {};
|
|
48
49
|
//# sourceMappingURL=scheduler.d.ts.map
|
package/lib/scheduler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,EAAuB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AA4BhG,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IACE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAoGL,QAAA,MAAM,OAAO,eAA4B,CAAA;AAQzC,qBAAa,SAAU,SAAQ,KAAK;;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IASjC,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,SAAS,CAAQ;IAQzB,OAAO,CAAC,IAAI,CAAQ;IAqBpB,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM;IAc1C,IAAI,WAAW,WAGd;IAED,IAAI,KAAK;;;;;;;;;;MAYR;gBAGC,iBAAiB,EAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,EAC3E,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAoDhD,CAAC,OAAO,CAAC;IAuCT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,EAAuB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AA4BhG,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN;IACE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAoGL,QAAA,MAAM,OAAO,eAA4B,CAAA;AAQzC,qBAAa,SAAU,SAAQ,KAAK;;IAClC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IASjC,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,SAAS,CAAQ;IAQzB,OAAO,CAAC,IAAI,CAAQ;IAqBpB,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM;IAc1C,IAAI,WAAW,WAGd;IAED,IAAI,KAAK;;;;;;;;;;MAYR;gBAGC,iBAAiB,EAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,EAC3E,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE;IAoDhD,CAAC,OAAO,CAAC;IAuCT,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2B3F,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO;IACxD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO;IAqE1F,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO;IAuGxC,OAAO,aAiCL;IAEF,CAAC,MAAM,CAAC,OAAO,CAAC;CAejB"}
|
package/lib/scheduler.js
CHANGED
|
@@ -265,6 +265,14 @@ export class Scheduler extends Queue {
|
|
|
265
265
|
}
|
|
266
266
|
run(fn, priority = Queue.NORMAL, opaque) {
|
|
267
267
|
return new Promise((resolve, reject) => {
|
|
268
|
+
// After dispose/exit the scheduler is inert: #tryAcquire returns false and
|
|
269
|
+
// acquire() refuses to queue, so without this guard the returned promise would
|
|
270
|
+
// hang forever (leaking the promise + ctx). Reject so callers awaiting it fail
|
|
271
|
+
// fast instead of stalling.
|
|
272
|
+
if (this.dead) {
|
|
273
|
+
reject(new Error('Scheduler is disposed'));
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
268
276
|
const ctx = { resolve, reject, fn, opaque };
|
|
269
277
|
const p = parsePriority(priority);
|
|
270
278
|
if (this.#tryAcquire(p)) {
|
|
@@ -457,5 +465,20 @@ export class Scheduler extends Queue {
|
|
|
457
465
|
}
|
|
458
466
|
this.#schedule(running);
|
|
459
467
|
};
|
|
468
|
+
[Symbol.dispose]() {
|
|
469
|
+
if (this.dead) {
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
// Reuse the exit-cleanup path: release any global slots this instance still holds,
|
|
473
|
+
// pair the WAITERS increment of a parked waitAsync, and mark the instance dead so any
|
|
474
|
+
// late notify .then microtask becomes a no-op (see the `dead` field docstring).
|
|
475
|
+
this[kOnExit]();
|
|
476
|
+
// Drop our reference to the parked waitAsync chain and remove the strong ref that the
|
|
477
|
+
// exit registry holds, so the instance — and the .then closure capturing it — can be
|
|
478
|
+
// garbage-collected without waiting for process exit. Cleanup already ran above, so
|
|
479
|
+
// there is nothing left for process.on('exit') to do for this instance.
|
|
480
|
+
this.#waitPromise = null;
|
|
481
|
+
schedulers.delete(this);
|
|
482
|
+
}
|
|
460
483
|
}
|
|
461
484
|
//# sourceMappingURL=scheduler.js.map
|
package/lib/scheduler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxtedition/scheduler",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -22,16 +22,15 @@
|
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
23
|
"test": "yarn build && node --test",
|
|
24
24
|
"test:ci": "yarn build && node --test",
|
|
25
|
-
"test:coverage": "
|
|
25
|
+
"test:coverage": "node --test --experimental-test-coverage 'src/*.test.ts'",
|
|
26
26
|
"test:types": "tsd"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^25.5.0",
|
|
30
|
-
"amaroc": "^1.0.1",
|
|
31
30
|
"oxlint-tsgolint": "^0.17.0",
|
|
32
31
|
"rimraf": "^6.1.3",
|
|
33
32
|
"tsd": "^0.33.0",
|
|
34
33
|
"typescript": "^5.9.3"
|
|
35
34
|
},
|
|
36
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "7c9c7457c885c644c7a1e70ef894d4727ce240d6"
|
|
37
36
|
}
|