velocious 1.0.685 → 1.0.687
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 +1 -1
- package/build/background-jobs/lifecycle-client.js +66 -2
- package/build/background-jobs/worker.js +88 -9
- package/build/http-server/client/serve-file.js +64 -0
- package/build/src/background-jobs/lifecycle-client.d.ts +12 -1
- package/build/src/background-jobs/lifecycle-client.d.ts.map +1 -1
- package/build/src/background-jobs/lifecycle-client.js +65 -3
- package/build/src/background-jobs/worker.d.ts +41 -6
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +84 -11
- package/build/src/http-server/client/serve-file.d.ts +23 -0
- package/build/src/http-server/client/serve-file.d.ts.map +1 -0
- package/build/src/http-server/client/serve-file.js +56 -0
- package/package.json +1 -1
- package/src/background-jobs/lifecycle-client.js +66 -2
- package/src/background-jobs/worker.js +88 -9
- package/src/http-server/client/serve-file.js +64 -0
package/README.md
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
* Cross-process broadcast bus for `broadcastToChannel` via `velocious beacon`, including background job runner processes (see [docs/beacon.md](docs/beacon.md))
|
|
35
35
|
* Websocket channel primitives for 1:N pub/sub over the shared session socket (`channel-subscribe` protocol): `matches()`-routed streams, interest-gated event-log persistence with 10-minute retention, stream-scoped `lastEventId` replay with `channel-replay-gap` gap reporting, and `{liveOnly: true}` channels that never reach the replay log (see [docs/websocket-channels.md](docs/websocket-channels.md))
|
|
36
36
|
* Rails-style application process initializer teardown with immutable process identity, reverse idempotent shutdown, and explicit HTTP/background-job ownership (see [docs/application-process-lifecycle.md](docs/application-process-lifecycle.md))
|
|
37
|
-
* Configurable HTTP server worker handlers plus backpressured, descriptor-only file responses with completion callbacks (see [docs/http-server.md](docs/http-server.md))
|
|
37
|
+
* Configurable HTTP server worker handlers plus backpressured, descriptor-only file responses with completion callbacks, and a length-determined `serveFile` static-asset helper for proxies that cannot handle chunked transfer encoding (see [docs/http-server.md](docs/http-server.md))
|
|
38
38
|
* Explicit database-free in-process HTTP applications with optional request and buffered-response byte limits (see [docs/http-server.md](docs/http-server.md#database-free-applications))
|
|
39
39
|
* Client-disconnect hooks for buffered (`request.onClientDisconnect` / `request.clientDisconnected`) alongside the streaming `response.onStreamClose` so long-running handlers can settle in-flight work when the socket goes away (see [docs/http-server.md](docs/http-server.md#client-disconnect-for-buffered-requests))
|
|
40
40
|
* Default-on buffered HTTP response compression with Brotli/gzip content negotiation, global and per-response opt-outs, and HEAD-correct representation headers (see [docs/http-server.md](docs/http-server.md#response-compression))
|
|
@@ -7,6 +7,49 @@ import JsonSocket from "./json-socket.js"
|
|
|
7
7
|
|
|
8
8
|
const DEFAULT_REQUEST_TIMEOUT_MS = 10000
|
|
9
9
|
export const MAX_LIFECYCLE_REQUEST_TIMEOUT_MS = 120000
|
|
10
|
+
const LIFECYCLE_CONNECT_RETRY_DELAY_MS = 50
|
|
11
|
+
const TRANSIENT_CONNECT_ERROR_CODES = new Set(["ECONNABORTED", "ECONNREFUSED", "ENOENT"])
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Whether a lifecycle request failure is a transient "endpoint not ready yet"
|
|
15
|
+
* connect failure (the coordinator's control socket opens asynchronously after
|
|
16
|
+
* its process starts) rather than a definitive protocol or state rejection.
|
|
17
|
+
* @param {unknown} error - The rejection reason.
|
|
18
|
+
* @returns {boolean} - Whether the request may be retried.
|
|
19
|
+
*/
|
|
20
|
+
function isTransientConnectError(error) {
|
|
21
|
+
if (typeof error !== "object" || error === null) return false
|
|
22
|
+
const code = /** @type {{code?: unknown}} */ (error).code
|
|
23
|
+
|
|
24
|
+
return typeof code === "string" && TRANSIENT_CONNECT_ERROR_CODES.has(code)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Waits before the next lifecycle connect retry, rejecting with the signal
|
|
29
|
+
* reason when the caller-owned deadline fires mid-wait.
|
|
30
|
+
* @param {number} delayMs - Wait between attempts.
|
|
31
|
+
* @param {AbortSignal} signal - Caller-owned deadline signal.
|
|
32
|
+
* @returns {Promise<void>} - Resolves after the delay, or rejects on abort.
|
|
33
|
+
*/
|
|
34
|
+
async function waitBeforeNextAttempt(delayMs, signal) {
|
|
35
|
+
await new Promise((resolve, reject) => {
|
|
36
|
+
if (signal.aborted) {
|
|
37
|
+
reject(signal.reason)
|
|
38
|
+
|
|
39
|
+
return
|
|
40
|
+
}
|
|
41
|
+
const timer = setTimeout(() => {
|
|
42
|
+
signal.removeEventListener("abort", onAbort)
|
|
43
|
+
resolve(undefined)
|
|
44
|
+
}, delayMs)
|
|
45
|
+
const onAbort = () => {
|
|
46
|
+
clearTimeout(timer)
|
|
47
|
+
reject(signal.reason)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
signal.addEventListener("abort", onAbort)
|
|
51
|
+
})
|
|
52
|
+
}
|
|
10
53
|
|
|
11
54
|
/** One-request acknowledged lifecycle client. */
|
|
12
55
|
export default class BackgroundJobsLifecycleClient {
|
|
@@ -59,14 +102,35 @@ export default class BackgroundJobsLifecycleClient {
|
|
|
59
102
|
}
|
|
60
103
|
|
|
61
104
|
/**
|
|
62
|
-
* Sends the lifecycle request under its caller-owned deadline.
|
|
105
|
+
* Sends the lifecycle request under its caller-owned deadline. Retries
|
|
106
|
+
* transient "endpoint not ready yet" connect failures (the coordinator opens
|
|
107
|
+
* its control socket asynchronously after its process starts) until the
|
|
108
|
+
* deadline; any definitive protocol or state rejection fails immediately.
|
|
63
109
|
* @param {object} args - Request details.
|
|
64
110
|
* @param {"activate" | "retire"} args.action - Lifecycle action.
|
|
65
111
|
* @param {AbortSignal} args.signal - Request deadline signal.
|
|
66
112
|
* @returns {Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>} - Resulting state.
|
|
67
113
|
*/
|
|
68
114
|
async _runRequest({action, signal}) {
|
|
69
|
-
|
|
115
|
+
while (true) {
|
|
116
|
+
try {
|
|
117
|
+
return await this._attemptRequest(action, randomUUID(), signal)
|
|
118
|
+
} catch (error) {
|
|
119
|
+
if (!isTransientConnectError(error)) throw error
|
|
120
|
+
if (signal.aborted) throw signal.reason
|
|
121
|
+
await waitBeforeNextAttempt(LIFECYCLE_CONNECT_RETRY_DELAY_MS, signal)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Performs one lifecycle request attempt against the control socket.
|
|
128
|
+
* @param {"activate" | "retire"} action - Lifecycle action.
|
|
129
|
+
* @param {string} requestId - Request identity for acknowledgement matching.
|
|
130
|
+
* @param {AbortSignal} signal - Request deadline signal.
|
|
131
|
+
* @returns {Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>} - Resulting state.
|
|
132
|
+
*/
|
|
133
|
+
async _attemptRequest(action, requestId, signal) {
|
|
70
134
|
const socket = net.createConnection(this.socketPath)
|
|
71
135
|
const jsonSocket = new JsonSocket(socket)
|
|
72
136
|
|
|
@@ -1147,6 +1147,24 @@ export default class BackgroundJobsWorker {
|
|
|
1147
1147
|
return Math.max(0, this.pooledRunnerCount - this.pooledChildren.size)
|
|
1148
1148
|
}
|
|
1149
1149
|
|
|
1150
|
+
/**
|
|
1151
|
+
* Counts live children still able to run new work. The pool must always
|
|
1152
|
+
* keep — or restore, through the bounded over-cap liveness replacement — at
|
|
1153
|
+
* least one non-retiring child: with every live child retiring, advertised
|
|
1154
|
+
* capacity is zero for the entire drain window, which can stretch to the
|
|
1155
|
+
* longest in-flight job, and dispatch silently stalls.
|
|
1156
|
+
* @returns {number} - Number of non-retiring pooled children.
|
|
1157
|
+
*/
|
|
1158
|
+
_nonRetiringPooledChildCount() {
|
|
1159
|
+
let count = 0
|
|
1160
|
+
|
|
1161
|
+
for (const state of this.pooledChildStates.values()) {
|
|
1162
|
+
if (!state.retiring) count += 1
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
return count
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1150
1168
|
/**
|
|
1151
1169
|
* Resolves once a non-retiring pooled child has a free concurrency slot or the
|
|
1152
1170
|
* pool may spawn a new one. Pooled jobs admitted while the pool is at its
|
|
@@ -1358,13 +1376,18 @@ export default class BackgroundJobsWorker {
|
|
|
1358
1376
|
* Creates a reusable pooled child, enforcing the hard cap on total live
|
|
1359
1377
|
* children (working + draining). Returns undefined when the cap is already
|
|
1360
1378
|
* met — the only way a new child may exist is a slot being open, so the
|
|
1361
|
-
* caller re-checks and waits again.
|
|
1379
|
+
* caller re-checks and waits again. `allowOverCap` is reserved for the
|
|
1380
|
+
* bounded liveness replacement: at most one child beyond the cap may exist,
|
|
1381
|
+
* and only when every other live child is already retiring (see
|
|
1382
|
+
* `_beginRetirePooledChild` for the gate).
|
|
1383
|
+
* @param {object} [args] - Spawn options.
|
|
1384
|
+
* @param {boolean} [args.allowOverCap] - Allow one over-cap spawn for the liveness replacement.
|
|
1362
1385
|
* @returns {import("node:child_process").ChildProcess | undefined} - The new child, or undefined when the pool is at its cap.
|
|
1363
1386
|
*/
|
|
1364
|
-
_createPooledChild() {
|
|
1387
|
+
_createPooledChild({allowOverCap = false} = {}) {
|
|
1365
1388
|
const configuration = this.configuration
|
|
1366
1389
|
if (!configuration) throw new Error("Background jobs worker configuration not initialized")
|
|
1367
|
-
if (this.pooledChildren.size >= this.pooledRunnerCount) return undefined
|
|
1390
|
+
if (!allowOverCap && this.pooledChildren.size >= this.pooledRunnerCount) return undefined
|
|
1368
1391
|
const child = fork(POOLED_RUNNER_ENTRY_PATH, [], {
|
|
1369
1392
|
cwd: configuration.getDirectory(), execArgv: [], stdio: ["ignore", "ignore", "ignore", "ipc"],
|
|
1370
1393
|
env: Object.assign({}, process.env, this._childBackgroundJobsEnvironment())
|
|
@@ -1577,10 +1600,19 @@ export default class BackgroundJobsWorker {
|
|
|
1577
1600
|
* cap — eagerly spawns a single replacement (1-for-1) so its capacity is
|
|
1578
1601
|
* restored immediately without waiting for it to finish draining. The
|
|
1579
1602
|
* replacement spawn is gated by the cap (the retiring child still counts as
|
|
1580
|
-
* live until it exits), so a full pool
|
|
1581
|
-
*
|
|
1582
|
-
*
|
|
1583
|
-
*
|
|
1603
|
+
* live until it exits), so a full pool defers the replacement to the drain
|
|
1604
|
+
* path. One bounded exception keeps the pool from ever advertising zero
|
|
1605
|
+
* capacity: when this mark leaves no non-retiring child, a single liveness
|
|
1606
|
+
* replacement spawns over the cap — live children stay bounded at
|
|
1607
|
+
* `pooledRunnerCount + 1`, and the extra child is absorbed by the next
|
|
1608
|
+
* draining exit. Without it, a full retirement wave (e.g. every child
|
|
1609
|
+
* crossing the peak-RSS threshold after the same memory burst) silently
|
|
1610
|
+
* removes all pooled capacity for the whole drain window, which can stretch
|
|
1611
|
+
* to the longest in-flight job. When even the liveness spawn is unavailable
|
|
1612
|
+
* (an over-cap child is already draining), the starvation is logged so it is
|
|
1613
|
+
* visible instead of silent. The retiring child stops receiving new jobs and
|
|
1614
|
+
* is terminated only once its in-flight set drains, so a long-running job
|
|
1615
|
+
* (e.g. a build) is never cut off.
|
|
1584
1616
|
* @param {import("node:child_process").ChildProcess} child - Child to retire.
|
|
1585
1617
|
* @returns {void}
|
|
1586
1618
|
*/
|
|
@@ -1592,8 +1624,55 @@ export default class BackgroundJobsWorker {
|
|
|
1592
1624
|
// Best-effort pre-warm: skip when stopping (no new work) or before the
|
|
1593
1625
|
// worker is initialized (no configuration to fork a child from). The cap
|
|
1594
1626
|
// inside _createPooledChild refuses the spawn while the pool is full, in
|
|
1595
|
-
// which case the
|
|
1596
|
-
if (
|
|
1627
|
+
// which case the bounded liveness replacement below takes over.
|
|
1628
|
+
if (this.shouldStop || !this.configuration) return
|
|
1629
|
+
|
|
1630
|
+
if (this._createPooledChild()) return
|
|
1631
|
+
if (this._nonRetiringPooledChildCount() > 0) return
|
|
1632
|
+
|
|
1633
|
+
// Liveness replacement: this mark emptied the working pool, so advertised
|
|
1634
|
+
// capacity would be zero until a draining child exits. Spawn one
|
|
1635
|
+
// replacement over the hard cap (bounded: the gate admits it only when the
|
|
1636
|
+
// live count is at most the cap, so at most one over-cap child exists and
|
|
1637
|
+
// the next draining exit absorbs it).
|
|
1638
|
+
if (this.pooledChildren.size <= this.pooledRunnerCount) {
|
|
1639
|
+
const livenessChild = this._createPooledChild({allowOverCap: true})
|
|
1640
|
+
|
|
1641
|
+
if (livenessChild) {
|
|
1642
|
+
this._logPooledCapacityEvent("pooled-capacity-liveness-spawn")
|
|
1643
|
+
return
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
// An over-cap child is already draining: the pool waits for the next
|
|
1648
|
+
// draining exit, which frees a cap slot for a lazy replacement. Log it so
|
|
1649
|
+
// this bounded starvation is not silent.
|
|
1650
|
+
this._logPooledCapacityEvent("pooled-capacity-starved")
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
/**
|
|
1654
|
+
* Logs one compact pooled-capacity event to the worker's own stderr (the
|
|
1655
|
+
* surface that reaches the production log). Used by the bounded liveness
|
|
1656
|
+
* replacement in `_beginRetirePooledChild`: the spawn that keeps dispatch
|
|
1657
|
+
* alive through a full retirement wave, or the bounded starvation when an
|
|
1658
|
+
* over-cap child is already draining and the pool must wait for an exit.
|
|
1659
|
+
* @param {"pooled-capacity-liveness-spawn" | "pooled-capacity-starved"} event - Event name.
|
|
1660
|
+
* @returns {void}
|
|
1661
|
+
*/
|
|
1662
|
+
_logPooledCapacityEvent(event) {
|
|
1663
|
+
let retiringChildren = 0
|
|
1664
|
+
|
|
1665
|
+
for (const state of this.pooledChildStates.values()) {
|
|
1666
|
+
if (state.retiring) retiringChildren += 1
|
|
1667
|
+
}
|
|
1668
|
+
|
|
1669
|
+
console.error(JSON.stringify({
|
|
1670
|
+
event,
|
|
1671
|
+
liveChildren: this.pooledChildren.size,
|
|
1672
|
+
retiringChildren,
|
|
1673
|
+
cap: this.pooledRunnerCount,
|
|
1674
|
+
concurrency: this.pooledRunnerConcurrency
|
|
1675
|
+
}))
|
|
1597
1676
|
}
|
|
1598
1677
|
|
|
1599
1678
|
/**
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import fs from "node:fs/promises"
|
|
4
|
+
import path from "node:path"
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Serves a static file from `root` directory to the response as a
|
|
8
|
+
* length-determined body (no chunked transfer-encoding).
|
|
9
|
+
*
|
|
10
|
+
* This is the proxy-safe alternative to `response.setFilePath()` /
|
|
11
|
+
* `response.stream()`: the file is read into memory and sent with an
|
|
12
|
+
* explicit `Content-Length` header, which avoids issues with proxies
|
|
13
|
+
* (e.g. Rollbridge) that do not support chunked transfer encoding.
|
|
14
|
+
* @param {import("./response.js").default} response
|
|
15
|
+
* The HTTP response to write to.
|
|
16
|
+
* @param {string} root - Absolute directory path that files must live under.
|
|
17
|
+
* @param {string} name - File name (or relative path) to serve from within `root`.
|
|
18
|
+
* @param {object} [options] - Serving options.
|
|
19
|
+
* @param {string} [options.contentType] - MIME type to set on the response.
|
|
20
|
+
* @param {string} [options.cacheControl] - Value for the `Cache-Control` header.
|
|
21
|
+
* @returns {Promise<boolean>} - `true` if the file was served, `false` if the
|
|
22
|
+
* file was not found or the name resolved outside the root (404 set in both cases).
|
|
23
|
+
*/
|
|
24
|
+
export default async function serveFile(response, root, name, options = {}) {
|
|
25
|
+
const {contentType, cacheControl} = options
|
|
26
|
+
|
|
27
|
+
// Reject empty or null names.
|
|
28
|
+
if (!name || typeof name !== "string") {
|
|
29
|
+
response.setStatus(404)
|
|
30
|
+
return false
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Resolve the target path and verify it stays within root.
|
|
34
|
+
const resolvedRoot = path.resolve(root)
|
|
35
|
+
const targetPath = path.resolve(resolvedRoot, name)
|
|
36
|
+
|
|
37
|
+
// Path containment check: the resolved target must be inside root.
|
|
38
|
+
if (targetPath !== resolvedRoot && !targetPath.startsWith(resolvedRoot + path.sep)) {
|
|
39
|
+
response.setStatus(404)
|
|
40
|
+
return false
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// lstat to reject symlinks and confirm the path is a regular file.
|
|
44
|
+
let stat
|
|
45
|
+
try {
|
|
46
|
+
stat = await fs.lstat(targetPath)
|
|
47
|
+
} catch {
|
|
48
|
+
response.setStatus(404)
|
|
49
|
+
return false
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (!stat.isFile() || stat.isSymbolicLink()) {
|
|
53
|
+
response.setStatus(404)
|
|
54
|
+
return false
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const data = await fs.readFile(targetPath)
|
|
58
|
+
|
|
59
|
+
response.setBody(data)
|
|
60
|
+
response.setHeader("Content-Type", contentType || "application/octet-stream")
|
|
61
|
+
response.setHeader("Cache-Control", cacheControl || "no-store")
|
|
62
|
+
|
|
63
|
+
return true
|
|
64
|
+
}
|
|
@@ -35,7 +35,10 @@ export default class BackgroundJobsLifecycleClient {
|
|
|
35
35
|
*/
|
|
36
36
|
_request(action: "activate" | "retire"): Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>;
|
|
37
37
|
/**
|
|
38
|
-
* Sends the lifecycle request under its caller-owned deadline.
|
|
38
|
+
* Sends the lifecycle request under its caller-owned deadline. Retries
|
|
39
|
+
* transient "endpoint not ready yet" connect failures (the coordinator opens
|
|
40
|
+
* its control socket asynchronously after its process starts) until the
|
|
41
|
+
* deadline; any definitive protocol or state rejection fails immediately.
|
|
39
42
|
* @param {object} args - Request details.
|
|
40
43
|
* @param {"activate" | "retire"} args.action - Lifecycle action.
|
|
41
44
|
* @param {AbortSignal} args.signal - Request deadline signal.
|
|
@@ -45,5 +48,13 @@ export default class BackgroundJobsLifecycleClient {
|
|
|
45
48
|
action: "activate" | "retire";
|
|
46
49
|
signal: AbortSignal;
|
|
47
50
|
}): Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>;
|
|
51
|
+
/**
|
|
52
|
+
* Performs one lifecycle request attempt against the control socket.
|
|
53
|
+
* @param {"activate" | "retire"} action - Lifecycle action.
|
|
54
|
+
* @param {string} requestId - Request identity for acknowledgement matching.
|
|
55
|
+
* @param {AbortSignal} signal - Request deadline signal.
|
|
56
|
+
* @returns {Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>} - Resulting state.
|
|
57
|
+
*/
|
|
58
|
+
_attemptRequest(action: "activate" | "retire", requestId: string, signal: AbortSignal): Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>;
|
|
48
59
|
}
|
|
49
60
|
//# sourceMappingURL=lifecycle-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-client.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/lifecycle-client.js"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"lifecycle-client.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/lifecycle-client.js"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,SAAS,CAAA;AA6CtD,iDAAiD;AACjD,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAezC,YAAY;IACZ,UAAU;IAIV,gBAAgB;IAnBvB;;;;;;;OAOG;IACH,YAAY,EAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,gBAA6C,EAAC,EALjG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO,CAC7C;QAAsB,YAAY,AAAlC,CACA,EADQ,MAAM,CACd;QAAsB,UAAU,AAAhC,CACA,EADQ,MAAM,CACd;QAAsB,gBAAgB,AAAtC,CACF,EADU,MAAM,CAChB;KACmG,EAcnG;IAED;;;OAGG;IACG,QAAQ,IAFD,OAAO,CAAC,OAAO,YAAY,EAAE,sCAAsC,CAAC,CAEtB;IAE3D;;;OAGG;IACG,MAAM,IAFC,OAAO,CAAC,OAAO,YAAY,EAAE,sCAAsC,CAAC,CAE1B;IAEvD;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAHV,UAAU,GAAG,QAGH,GAFR,OAAO,CAAC,OAAO,YAAY,EAAE,sCAAsC,CAAC,CAOhF;IAED;;;;;;;;;OASG;IACG,WAAW,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,EAJ/B;QAAoC,MAAM,EAAlC,UAAU,GAAG,QAAQ,CAC7B;QAA0B,MAAM,EAAxB,WAAW,CACnB;KAE+B,GAFrB,OAAO,CAAC,OAAO,YAAY,EAAE,sCAAsC,CAAC,CAYhF;IAED;;;;;;OAMG;IACG,eAAe,CAAC,MAAM,EALjB,UAAU,GAAG,QAKI,EAAE,SAAS,EAJ5B,MAI4B,EAAE,MAAM,EAHpC,WAGoC,GAFlC,OAAO,CAAC,OAAO,YAAY,EAAE,sCAAsC,CAAC,CA2DhF;CACF"}
|
|
@@ -5,6 +5,45 @@ import timeout from "awaitery/build/timeout.js";
|
|
|
5
5
|
import JsonSocket from "./json-socket.js";
|
|
6
6
|
const DEFAULT_REQUEST_TIMEOUT_MS = 10000;
|
|
7
7
|
export const MAX_LIFECYCLE_REQUEST_TIMEOUT_MS = 120000;
|
|
8
|
+
const LIFECYCLE_CONNECT_RETRY_DELAY_MS = 50;
|
|
9
|
+
const TRANSIENT_CONNECT_ERROR_CODES = new Set(["ECONNABORTED", "ECONNREFUSED", "ENOENT"]);
|
|
10
|
+
/**
|
|
11
|
+
* Whether a lifecycle request failure is a transient "endpoint not ready yet"
|
|
12
|
+
* connect failure (the coordinator's control socket opens asynchronously after
|
|
13
|
+
* its process starts) rather than a definitive protocol or state rejection.
|
|
14
|
+
* @param {unknown} error - The rejection reason.
|
|
15
|
+
* @returns {boolean} - Whether the request may be retried.
|
|
16
|
+
*/
|
|
17
|
+
function isTransientConnectError(error) {
|
|
18
|
+
if (typeof error !== "object" || error === null)
|
|
19
|
+
return false;
|
|
20
|
+
const code = /** @type {{code?: unknown}} */ (error).code;
|
|
21
|
+
return typeof code === "string" && TRANSIENT_CONNECT_ERROR_CODES.has(code);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Waits before the next lifecycle connect retry, rejecting with the signal
|
|
25
|
+
* reason when the caller-owned deadline fires mid-wait.
|
|
26
|
+
* @param {number} delayMs - Wait between attempts.
|
|
27
|
+
* @param {AbortSignal} signal - Caller-owned deadline signal.
|
|
28
|
+
* @returns {Promise<void>} - Resolves after the delay, or rejects on abort.
|
|
29
|
+
*/
|
|
30
|
+
async function waitBeforeNextAttempt(delayMs, signal) {
|
|
31
|
+
await new Promise((resolve, reject) => {
|
|
32
|
+
if (signal.aborted) {
|
|
33
|
+
reject(signal.reason);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const timer = setTimeout(() => {
|
|
37
|
+
signal.removeEventListener("abort", onAbort);
|
|
38
|
+
resolve(undefined);
|
|
39
|
+
}, delayMs);
|
|
40
|
+
const onAbort = () => {
|
|
41
|
+
clearTimeout(timer);
|
|
42
|
+
reject(signal.reason);
|
|
43
|
+
};
|
|
44
|
+
signal.addEventListener("abort", onAbort);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
8
47
|
/** One-request acknowledged lifecycle client. */
|
|
9
48
|
export default class BackgroundJobsLifecycleClient {
|
|
10
49
|
/**
|
|
@@ -54,14 +93,37 @@ export default class BackgroundJobsLifecycleClient {
|
|
|
54
93
|
}, async ({ control }) => await this._runRequest({ action, signal: control.signal }));
|
|
55
94
|
}
|
|
56
95
|
/**
|
|
57
|
-
* Sends the lifecycle request under its caller-owned deadline.
|
|
96
|
+
* Sends the lifecycle request under its caller-owned deadline. Retries
|
|
97
|
+
* transient "endpoint not ready yet" connect failures (the coordinator opens
|
|
98
|
+
* its control socket asynchronously after its process starts) until the
|
|
99
|
+
* deadline; any definitive protocol or state rejection fails immediately.
|
|
58
100
|
* @param {object} args - Request details.
|
|
59
101
|
* @param {"activate" | "retire"} args.action - Lifecycle action.
|
|
60
102
|
* @param {AbortSignal} args.signal - Request deadline signal.
|
|
61
103
|
* @returns {Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>} - Resulting state.
|
|
62
104
|
*/
|
|
63
105
|
async _runRequest({ action, signal }) {
|
|
64
|
-
|
|
106
|
+
while (true) {
|
|
107
|
+
try {
|
|
108
|
+
return await this._attemptRequest(action, randomUUID(), signal);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (!isTransientConnectError(error))
|
|
112
|
+
throw error;
|
|
113
|
+
if (signal.aborted)
|
|
114
|
+
throw signal.reason;
|
|
115
|
+
await waitBeforeNextAttempt(LIFECYCLE_CONNECT_RETRY_DELAY_MS, signal);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Performs one lifecycle request attempt against the control socket.
|
|
121
|
+
* @param {"activate" | "retire"} action - Lifecycle action.
|
|
122
|
+
* @param {string} requestId - Request identity for acknowledgement matching.
|
|
123
|
+
* @param {AbortSignal} signal - Request deadline signal.
|
|
124
|
+
* @returns {Promise<import("./types.js").BackgroundJobsGenerationLifecycleState>} - Resulting state.
|
|
125
|
+
*/
|
|
126
|
+
async _attemptRequest(action, requestId, signal) {
|
|
65
127
|
const socket = net.createConnection(this.socketPath);
|
|
66
128
|
const jsonSocket = new JsonSocket(socket);
|
|
67
129
|
return await new Promise((resolve, reject) => {
|
|
@@ -123,4 +185,4 @@ export default class BackgroundJobsLifecycleClient {
|
|
|
123
185
|
});
|
|
124
186
|
}
|
|
125
187
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvbGlmZWN5Y2xlLWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUE7QUFDMUIsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUE7QUFDeEMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsTUFBTSxDQUFBO0FBRXRELGlEQUFpRDtBQUNqRCxNQUFNLENBQUMsT0FBTyxPQUFPLDZCQUE2QjtJQUNoRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxFQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixHQUFHLDBCQUEwQixFQUFDO1FBQ2xHLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLHFDQUFxQyxDQUFDO1lBQzNFLFlBQVk7WUFDWixtQkFBbUIsRUFBRSxVQUFVO1lBQy9CLFVBQVUsRUFBRSwrQkFBK0I7U0FDNUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUE7UUFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQTtRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGdCQUFnQixHQUFHLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxnQ0FBZ0MsRUFBRSxDQUFDO1lBQ3ZILE1BQU0sSUFBSSxTQUFTLENBQUMscURBQXFELGdDQUFnQyxFQUFFLENBQUMsQ0FBQTtRQUM5RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdC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Q0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUE7b0JBQy9FLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7b0JBQy9CLE9BQU07Z0JBQ1IsQ0FBQztnQkFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssK0JBQStCLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ25HLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUN4RixPQUFNO2dCQUNSLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7WUFDbkQsQ0FBQyxDQUFDLENBQUE7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUNqQyxJQUFJLE1BQU0sQ0FBQyxPQUFPO2dCQUFFLE9BQU8sRUFBRSxDQUFBO1FBQy9CLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IG5ldCBmcm9tIFwibm9kZTpuZXRcIlxuaW1wb3J0IHRpbWVvdXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3RpbWVvdXQuanNcIlxuaW1wb3J0IEpzb25Tb2NrZXQgZnJvbSBcIi4vanNvbi1zb2NrZXQuanNcIlxuXG5jb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVF9NUyA9IDEwMDAwXG5leHBvcnQgY29uc3QgTUFYX0xJRkVDWUNMRV9SRVFVRVNUX1RJTUVPVVRfTVMgPSAxMjAwMDBcblxuLyoqIE9uZS1yZXF1ZXN0IGFja25vd2xlZGdlZCBsaWZlY3ljbGUgY2xpZW50LiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYnNMaWZlY3ljbGVDbGllbnQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGxpZmVjeWNsZSBjbGllbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQ2xpZW50IG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuZ2VuZXJhdGlvbklkXSAtIEV4cGxpY2l0IGdlbmVyYXRpb24gaWRlbnRpdHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zb2NrZXRQYXRoXSAtIEV4cGxpY2l0IGNvbnRyb2wgc29ja2V0IHBhdGguXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5yZXF1ZXN0VGltZW91dE1zXSAtIFJlcXVlc3QgZGVhZGxpbmUgYmVsb3cgdGhlIHN1cGVydmlzb3IgaG9vayB0aW1lb3V0IChkZWZhdWx0OiAxMDAwMCkuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgZ2VuZXJhdGlvbklkLCBzb2NrZXRQYXRoLCByZXF1ZXN0VGltZW91dE1zID0gREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVN9KSB7XG4gICAgY29uc3QgZ2VuZXJhdGlvbkNvbmZpZyA9IGNvbmZpZ3VyYXRpb24ucmVzb2x2ZUJhY2tncm91bmRKb2JzR2VuZXJhdGlvbkNvbmZpZyh7XG4gICAgICBnZW5lcmF0aW9uSWQsXG4gICAgICBsaWZlY3ljbGVTb2NrZXRQYXRoOiBzb2NrZXRQYXRoLFxuICAgICAgc291cmNlTmFtZTogXCJCYWNrZ3JvdW5kSm9ic0xpZmVjeWNsZUNsaWVudFwiXG4gICAgfSlcbiAgICB0aGlzLmdlbmVyYXRpb25JZCA9IGdlbmVyYXRpb25Db25maWcuZ2VuZXJhdGlvbklkXG4gICAgdGhpcy5zb2NrZXRQYXRoID0gZ2VuZXJhdGlvbkNvbmZpZy5saWZlY3ljbGVTb2NrZXRQYXRoXG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHJlcXVlc3RUaW1lb3V0TXMpIHx8IHJlcXVlc3RUaW1lb3V0TXMgPCAxIHx8IHJlcXVlc3RUaW1lb3V0TXMgPiBNQVhfTElGRUNZQ0xFX1JFUVVFU1RfVElNRU9VVF9NUykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgcmVxdWVzdFRpbWVvdXRNcyBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAke01BWF9MSUZFQ1lDTEVfUkVRVUVTVF9USU1FT1VUX01TfWApXG4gICAgfVxuICAgIHRoaXMucmVxdWVzdFRpbWVvdXRNcyA9IHJlcXVlc3RUaW1lb3V0TXNcbiAgICBpZiAoIXRoaXMuZ2VuZXJhdGlvbklkKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgbGlmZWN5Y2xlIGNsaWVudCByZXF1aXJlcyBnZW5lcmF0aW9uSWRcIilcbiAgICBpZiAoIXRoaXMuc29ja2V0UGF0aCkgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZCBqb2JzIGxpZmVjeWNsZSBjbGllbnQgcmVxdWlyZXMgbGlmZWN5Y2xlU29ja2V0UGF0aFwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgZ2VuZXJhdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25MaWZlY3ljbGVTdGF0ZT59IC0gUmVzdWx0aW5nIHN0YXRlLlxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGUoKSB7IHJldHVybiBhd2FpdCB0aGlzLl9yZXF1ZXN0KFwiYWN0aXZhdGVcIikgfVxuXG4gIC8qKlxuICAgKiBSZXRpcmVzIHRoZSBnZW5lcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JzR2VuZXJhdGlvbkxpZmVjeWNsZVN0YXRlPn0gLSBSZXN1bHRpbmcgc3RhdGUuXG4gICAqL1xuICBhc3luYyByZXRpcmUoKSB7IHJldHVybiBhd2FpdCB0aGlzLl9yZXF1ZXN0KFwicmV0aXJlXCIpIH1cblxuICAvKipcbiAgICogU2VuZHMgZXhhY3RseSBvbmUgbGlmZWN5Y2xlIHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7XCJhY3RpdmF0ZVwiIHwgXCJyZXRpcmVcIn0gYWN0aW9uIC0gTGlmZWN5Y2xlIGFjdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25MaWZlY3ljbGVTdGF0ZT59IC0gUmVzdWx0aW5nIHN0YXRlLlxuICAgKi9cbiAgYXN5bmMgX3JlcXVlc3QoYWN0aW9uKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRpbWVvdXQoe1xuICAgICAgZXJyb3JNZXNzYWdlOiBgQmFja2dyb3VuZCBqb2JzICR7YWN0aW9ufSByZXF1ZXN0IGZvciAke3RoaXMuZ2VuZXJhdGlvbklkfSB0aW1lZCBvdXQgYWZ0ZXIgJHt0aGlzLnJlcXVlc3RUaW1lb3V0TXN9bXMgYXQgJHt0aGlzLnNvY2tldFBhdGh9YCxcbiAgICAgIHRpbWVvdXQ6IHRoaXMucmVxdWVzdFRpbWVvdXRNc1xuICAgIH0sIGFzeW5jICh7Y29udHJvbH0pID0+IGF3YWl0IHRoaXMuX3J1blJlcXVlc3Qoe2FjdGlvbiwgc2lnbmFsOiBjb250cm9sLnNpZ25hbH0pKVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIHRoZSBsaWZlY3ljbGUgcmVxdWVzdCB1bmRlciBpdHMgY2FsbGVyLW93bmVkIGRlYWRsaW5lLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlcXVlc3QgZGV0YWlscy5cbiAgICogQHBhcmFtIHtcImFjdGl2YXRlXCIgfCBcInJldGlyZVwifSBhcmdzLmFjdGlvbiAtIExpZmVjeWNsZSBhY3Rpb24uXG4gICAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IGFyZ3Muc2lnbmFsIC0gUmVxdWVzdCBkZWFkbGluZSBzaWduYWwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGU+fSAtIFJlc3VsdGluZyBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIF9ydW5SZXF1ZXN0KHthY3Rpb24sIHNpZ25hbH0pIHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSByYW5kb21VVUlEKClcbiAgICBjb25zdCBzb2NrZXQgPSBuZXQuY3JlYXRlQ29ubmVjdGlvbih0aGlzLnNvY2tldFBhdGgpXG4gICAgY29uc3QganNvblNvY2tldCA9IG5ldyBKc29uU29ja2V0KHNvY2tldClcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICAgICAgLyoqXG4gICAgICAgKiBTZXR0bGVzIHRoZSByZXF1ZXN0IG9uY2UuXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRlYXJkb3duIG9wdGlvbnMuXG4gICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRlc3Ryb3ldIC0gRGVzdHJveSBpbnN0ZWFkIG9mIGNsb3NpbmcuXG4gICAgICAgKiBAcGFyYW0geygpID0+IHZvaWR9IGNhbGxiYWNrIC0gU2V0dGxlbWVudCBjYWxsYmFjay5cbiAgICAgICAqL1xuICAgICAgY29uc3QgZmluaXNoID0gKHtkZXN0cm95ID0gZmFsc2V9LCBjYWxsYmFjaykgPT4ge1xuICAgICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0KVxuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoXCJjb25uZWN0XCIsIG9uQ29ubmVjdClcbiAgICAgICAganNvblNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgICAgICBpZiAoZGVzdHJveSkganNvblNvY2tldC5kZXN0cm95KClcbiAgICAgICAgZWxzZSBqc29uU29ja2V0LmNsb3NlKClcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4gZmluaXNoKHtkZXN0cm95OiB0cnVlfSwgKCkgPT4gcmVqZWN0KHNpZ25hbC5yZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHNpZ25hbC5yZWFzb24gOiBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgbGlmZWN5Y2xlIHJlcXVlc3QgYWJvcnRlZFwiKSkpXG4gICAgICBjb25zdCBvbkNvbm5lY3QgPSAoKSA9PiB7XG4gICAgICAgIGpzb25Tb2NrZXQuc2VuZCh7XG4gICAgICAgICAgdHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtbGlmZWN5Y2xlXCIsXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGdlbmVyYXRpb25JZDogdGhpcy5nZW5lcmF0aW9uSWQsXG4gICAgICAgICAgcmVxdWVzdElkXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydClcbiAgICAgIGpzb25Tb2NrZXQub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KGVycm9yKSkpXG4gICAgICBqc29uU29ja2V0Lm9uKFwiY2xvc2VcIiwgKCkgPT4gZmluaXNoKHtkZXN0cm95OiB0cnVlfSwgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihcIkJhY2tncm91bmQgam9icyBsaWZlY3ljbGUgc29ja2V0IGNsb3NlZCBiZWZvcmUgYWNrbm93bGVkZ2VtZW50XCIpKSkpXG4gICAgICBqc29uU29ja2V0Lm9uKFwibWVzc2FnZVwiLCAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZT8ucmVxdWVzdElkICE9PSByZXF1ZXN0SWQgfHwgbWVzc2FnZS5hY3Rpb24gIT09IGFjdGlvbikge1xuICAgICAgICAgIGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihcIkJhY2tncm91bmQgam9icyBsaWZlY3ljbGUgcmVzcG9uc2UgZGlkIG5vdCBtYXRjaCBpdHMgcmVxdWVzdFwiKSkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJiYWNrZ3JvdW5kLWpvYnMtbGlmZWN5Y2xlLWVycm9yXCIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlLmVycm9yPy5tZXNzYWdlIHx8IFwiQmFja2dyb3VuZCBqb2JzIGxpZmVjeWNsZSByZXF1ZXN0IGZhaWxlZFwiKVxuICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5lcnJvcj8ubmFtZSA9PT0gXCJzdHJpbmdcIikgZXJyb3IubmFtZSA9IG1lc3NhZ2UuZXJyb3IubmFtZVxuICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5lcnJvcj8uc3RhY2sgPT09IFwic3RyaW5nXCIpIGVycm9yLnN0YWNrID0gbWVzc2FnZS5lcnJvci5zdGFja1xuICAgICAgICAgIGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KGVycm9yKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBcImJhY2tncm91bmQtam9icy1saWZlY3ljbGUtYWNrXCIgfHwgbWVzc2FnZS5nZW5lcmF0aW9uSWQgIT09IHRoaXMuZ2VuZXJhdGlvbklkKSB7XG4gICAgICAgICAgZmluaXNoKHt9LCAoKSA9PiByZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBiYWNrZ3JvdW5kIGpvYnMgbGlmZWN5Y2xlIGFja25vd2xlZGdlbWVudFwiKSkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZmluaXNoKHt9LCAoKSA9PiByZXNvbHZlKG1lc3NhZ2UubGlmZWN5Y2xlU3RhdGUpKVxuICAgICAgfSlcbiAgICAgIHNvY2tldC5vbmNlKFwiY29ubmVjdFwiLCBvbkNvbm5lY3QpXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIG9uQWJvcnQoKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvbGlmZWN5Y2xlLWNsaWVudC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEdBQUcsTUFBTSxVQUFVLENBQUE7QUFDMUIsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUE7QUFDL0MsT0FBTyxVQUFVLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUE7QUFDeEMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsTUFBTSxDQUFBO0FBQ3RELE1BQU0sZ0NBQWdDLEdBQUcsRUFBRSxDQUFBO0FBQzNDLE1BQU0sNkJBQTZCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7QUFFekY7Ozs7OztHQU1HO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxLQUFLO0lBQ3BDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDN0QsTUFBTSxJQUFJLEdBQUcsK0JBQStCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFekQsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksNkJBQTZCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzVFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxLQUFLLFVBQVUscUJBQXFCLENBQUMsT0FBTyxFQUFFLE1BQU07SUFDbEQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNwQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuQixN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QUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDakMsSUFBSSxNQUFNLENBQUMsT0FBTztnQkFBRSxPQUFPLEVBQUUsQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCJcbmltcG9ydCBuZXQgZnJvbSBcIm5vZGU6bmV0XCJcbmltcG9ydCB0aW1lb3V0IGZyb20gXCJhd2FpdGVyeS9idWlsZC90aW1lb3V0LmpzXCJcbmltcG9ydCBKc29uU29ja2V0IGZyb20gXCIuL2pzb24tc29ja2V0LmpzXCJcblxuY29uc3QgREVGQVVMVF9SRVFVRVNUX1RJTUVPVVRfTVMgPSAxMDAwMFxuZXhwb3J0IGNvbnN0IE1BWF9MSUZFQ1lDTEVfUkVRVUVTVF9USU1FT1VUX01TID0gMTIwMDAwXG5jb25zdCBMSUZFQ1lDTEVfQ09OTkVDVF9SRVRSWV9ERUxBWV9NUyA9IDUwXG5jb25zdCBUUkFOU0lFTlRfQ09OTkVDVF9FUlJPUl9DT0RFUyA9IG5ldyBTZXQoW1wiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRUZVU0VEXCIsIFwiRU5PRU5UXCJdKVxuXG4vKipcbiAqIFdoZXRoZXIgYSBsaWZlY3ljbGUgcmVxdWVzdCBmYWlsdXJlIGlzIGEgdHJhbnNpZW50IFwiZW5kcG9pbnQgbm90IHJlYWR5IHlldFwiXG4gKiBjb25uZWN0IGZhaWx1cmUgKHRoZSBjb29yZGluYXRvcidzIGNvbnRyb2wgc29ja2V0IG9wZW5zIGFzeW5jaHJvbm91c2x5IGFmdGVyXG4gKiBpdHMgcHJvY2VzcyBzdGFydHMpIHJhdGhlciB0aGFuIGEgZGVmaW5pdGl2ZSBwcm90b2NvbCBvciBzdGF0ZSByZWplY3Rpb24uXG4gKiBAcGFyYW0ge3Vua25vd259IGVycm9yIC0gVGhlIHJlamVjdGlvbiByZWFzb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSByZXF1ZXN0IG1heSBiZSByZXRyaWVkLlxuICovXG5mdW5jdGlvbiBpc1RyYW5zaWVudENvbm5lY3RFcnJvcihlcnJvcikge1xuICBpZiAodHlwZW9mIGVycm9yICE9PSBcIm9iamVjdFwiIHx8IGVycm9yID09PSBudWxsKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgY29kZSA9IC8qKiBAdHlwZSB7e2NvZGU/OiB1bmtub3dufX0gKi8gKGVycm9yKS5jb2RlXG5cbiAgcmV0dXJuIHR5cGVvZiBjb2RlID09PSBcInN0cmluZ1wiICYmIFRSQU5TSUVOVF9DT05ORUNUX0VSUk9SX0NPREVTLmhhcyhjb2RlKVxufVxuXG4vKipcbiAqIFdhaXRzIGJlZm9yZSB0aGUgbmV4dCBsaWZlY3ljbGUgY29ubmVjdCByZXRyeSwgcmVqZWN0aW5nIHdpdGggdGhlIHNpZ25hbFxuICogcmVhc29uIHdoZW4gdGhlIGNhbGxlci1vd25lZCBkZWFkbGluZSBmaXJlcyBtaWQtd2FpdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZWxheU1zIC0gV2FpdCBiZXR3ZWVuIGF0dGVtcHRzLlxuICogQHBhcmFtIHtBYm9ydFNpZ25hbH0gc2lnbmFsIC0gQ2FsbGVyLW93bmVkIGRlYWRsaW5lIHNpZ25hbC5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHRoZSBkZWxheSwgb3IgcmVqZWN0cyBvbiBhYm9ydC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2FpdEJlZm9yZU5leHRBdHRlbXB0KGRlbGF5TXMsIHNpZ25hbCkge1xuICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZWplY3Qoc2lnbmFsLnJlYXNvbilcblxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpXG4gICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICB9LCBkZWxheU1zKVxuICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICByZWplY3Qoc2lnbmFsLnJlYXNvbilcbiAgICB9XG5cbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQpXG4gIH0pXG59XG5cbi8qKiBPbmUtcmVxdWVzdCBhY2tub3dsZWRnZWQgbGlmZWN5Y2xlIGNsaWVudC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhY2tncm91bmRKb2JzTGlmZWN5Y2xlQ2xpZW50IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBsaWZlY3ljbGUgY2xpZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENsaWVudCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gYXJncy5jb25maWd1cmF0aW9uIC0gQ29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmdlbmVyYXRpb25JZF0gLSBFeHBsaWNpdCBnZW5lcmF0aW9uIGlkZW50aXR5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc29ja2V0UGF0aF0gLSBFeHBsaWNpdCBjb250cm9sIHNvY2tldCBwYXRoLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MucmVxdWVzdFRpbWVvdXRNc10gLSBSZXF1ZXN0IGRlYWRsaW5lIGJlbG93IHRoZSBzdXBlcnZpc29yIGhvb2sgdGltZW91dCAoZGVmYXVsdDogMTAwMDApLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIGdlbmVyYXRpb25JZCwgc29ja2V0UGF0aCwgcmVxdWVzdFRpbWVvdXRNcyA9IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUX01TfSkge1xuICAgIGNvbnN0IGdlbmVyYXRpb25Db25maWcgPSBjb25maWd1cmF0aW9uLnJlc29sdmVCYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25Db25maWcoe1xuICAgICAgZ2VuZXJhdGlvbklkLFxuICAgICAgbGlmZWN5Y2xlU29ja2V0UGF0aDogc29ja2V0UGF0aCxcbiAgICAgIHNvdXJjZU5hbWU6IFwiQmFja2dyb3VuZEpvYnNMaWZlY3ljbGVDbGllbnRcIlxuICAgIH0pXG4gICAgdGhpcy5nZW5lcmF0aW9uSWQgPSBnZW5lcmF0aW9uQ29uZmlnLmdlbmVyYXRpb25JZFxuICAgIHRoaXMuc29ja2V0UGF0aCA9IGdlbmVyYXRpb25Db25maWcubGlmZWN5Y2xlU29ja2V0UGF0aFxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihyZXF1ZXN0VGltZW91dE1zKSB8fCByZXF1ZXN0VGltZW91dE1zIDwgMSB8fCByZXF1ZXN0VGltZW91dE1zID4gTUFYX0xJRkVDWUNMRV9SRVFVRVNUX1RJTUVPVVRfTVMpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYHJlcXVlc3RUaW1lb3V0TXMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgJHtNQVhfTElGRUNZQ0xFX1JFUVVFU1RfVElNRU9VVF9NU31gKVxuICAgIH1cbiAgICB0aGlzLnJlcXVlc3RUaW1lb3V0TXMgPSByZXF1ZXN0VGltZW91dE1zXG4gICAgaWYgKCF0aGlzLmdlbmVyYXRpb25JZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFja2dyb3VuZCBqb2JzIGxpZmVjeWNsZSBjbGllbnQgcmVxdWlyZXMgZ2VuZXJhdGlvbklkXCIpXG4gICAgaWYgKCF0aGlzLnNvY2tldFBhdGgpIHRocm93IG5ldyBFcnJvcihcIkJhY2tncm91bmQgam9icyBsaWZlY3ljbGUgY2xpZW50IHJlcXVpcmVzIGxpZmVjeWNsZVNvY2tldFBhdGhcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIGdlbmVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGU+fSAtIFJlc3VsdGluZyBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKCkgeyByZXR1cm4gYXdhaXQgdGhpcy5fcmVxdWVzdChcImFjdGl2YXRlXCIpIH1cblxuICAvKipcbiAgICogUmV0aXJlcyB0aGUgZ2VuZXJhdGlvbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25MaWZlY3ljbGVTdGF0ZT59IC0gUmVzdWx0aW5nIHN0YXRlLlxuICAgKi9cbiAgYXN5bmMgcmV0aXJlKCkgeyByZXR1cm4gYXdhaXQgdGhpcy5fcmVxdWVzdChcInJldGlyZVwiKSB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGV4YWN0bHkgb25lIGxpZmVjeWNsZSByZXF1ZXN0LlxuICAgKiBAcGFyYW0ge1wiYWN0aXZhdGVcIiB8IFwicmV0aXJlXCJ9IGFjdGlvbiAtIExpZmVjeWNsZSBhY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGU+fSAtIFJlc3VsdGluZyBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIF9yZXF1ZXN0KGFjdGlvbikge1xuICAgIHJldHVybiBhd2FpdCB0aW1lb3V0KHtcbiAgICAgIGVycm9yTWVzc2FnZTogYEJhY2tncm91bmQgam9icyAke2FjdGlvbn0gcmVxdWVzdCBmb3IgJHt0aGlzLmdlbmVyYXRpb25JZH0gdGltZWQgb3V0IGFmdGVyICR7dGhpcy5yZXF1ZXN0VGltZW91dE1zfW1zIGF0ICR7dGhpcy5zb2NrZXRQYXRofWAsXG4gICAgICB0aW1lb3V0OiB0aGlzLnJlcXVlc3RUaW1lb3V0TXNcbiAgICB9LCBhc3luYyAoe2NvbnRyb2x9KSA9PiBhd2FpdCB0aGlzLl9ydW5SZXF1ZXN0KHthY3Rpb24sIHNpZ25hbDogY29udHJvbC5zaWduYWx9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyB0aGUgbGlmZWN5Y2xlIHJlcXVlc3QgdW5kZXIgaXRzIGNhbGxlci1vd25lZCBkZWFkbGluZS4gUmV0cmllc1xuICAgKiB0cmFuc2llbnQgXCJlbmRwb2ludCBub3QgcmVhZHkgeWV0XCIgY29ubmVjdCBmYWlsdXJlcyAodGhlIGNvb3JkaW5hdG9yIG9wZW5zXG4gICAqIGl0cyBjb250cm9sIHNvY2tldCBhc3luY2hyb25vdXNseSBhZnRlciBpdHMgcHJvY2VzcyBzdGFydHMpIHVudGlsIHRoZVxuICAgKiBkZWFkbGluZTsgYW55IGRlZmluaXRpdmUgcHJvdG9jb2wgb3Igc3RhdGUgcmVqZWN0aW9uIGZhaWxzIGltbWVkaWF0ZWx5LlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJlcXVlc3QgZGV0YWlscy5cbiAgICogQHBhcmFtIHtcImFjdGl2YXRlXCIgfCBcInJldGlyZVwifSBhcmdzLmFjdGlvbiAtIExpZmVjeWNsZSBhY3Rpb24uXG4gICAqIEBwYXJhbSB7QWJvcnRTaWduYWx9IGFyZ3Muc2lnbmFsIC0gUmVxdWVzdCBkZWFkbGluZSBzaWduYWwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGU+fSAtIFJlc3VsdGluZyBzdGF0ZS5cbiAgICovXG4gIGFzeW5jIF9ydW5SZXF1ZXN0KHthY3Rpb24sIHNpZ25hbH0pIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2F0dGVtcHRSZXF1ZXN0KGFjdGlvbiwgcmFuZG9tVVVJRCgpLCBzaWduYWwpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoIWlzVHJhbnNpZW50Q29ubmVjdEVycm9yKGVycm9yKSkgdGhyb3cgZXJyb3JcbiAgICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSB0aHJvdyBzaWduYWwucmVhc29uXG4gICAgICAgIGF3YWl0IHdhaXRCZWZvcmVOZXh0QXR0ZW1wdChMSUZFQ1lDTEVfQ09OTkVDVF9SRVRSWV9ERUxBWV9NUywgc2lnbmFsKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtcyBvbmUgbGlmZWN5Y2xlIHJlcXVlc3QgYXR0ZW1wdCBhZ2FpbnN0IHRoZSBjb250cm9sIHNvY2tldC5cbiAgICogQHBhcmFtIHtcImFjdGl2YXRlXCIgfCBcInJldGlyZVwifSBhY3Rpb24gLSBMaWZlY3ljbGUgYWN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdElkIC0gUmVxdWVzdCBpZGVudGl0eSBmb3IgYWNrbm93bGVkZ2VtZW50IG1hdGNoaW5nLlxuICAgKiBAcGFyYW0ge0Fib3J0U2lnbmFsfSBzaWduYWwgLSBSZXF1ZXN0IGRlYWRsaW5lIHNpZ25hbC5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5CYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25MaWZlY3ljbGVTdGF0ZT59IC0gUmVzdWx0aW5nIHN0YXRlLlxuICAgKi9cbiAgYXN5bmMgX2F0dGVtcHRSZXF1ZXN0KGFjdGlvbiwgcmVxdWVzdElkLCBzaWduYWwpIHtcbiAgICBjb25zdCBzb2NrZXQgPSBuZXQuY3JlYXRlQ29ubmVjdGlvbih0aGlzLnNvY2tldFBhdGgpXG4gICAgY29uc3QganNvblNvY2tldCA9IG5ldyBKc29uU29ja2V0KHNvY2tldClcblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICAgICAgLyoqXG4gICAgICAgKiBTZXR0bGVzIHRoZSByZXF1ZXN0IG9uY2UuXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gb3B0aW9ucyAtIFRlYXJkb3duIG9wdGlvbnMuXG4gICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmRlc3Ryb3ldIC0gRGVzdHJveSBpbnN0ZWFkIG9mIGNsb3NpbmcuXG4gICAgICAgKiBAcGFyYW0geygpID0+IHZvaWR9IGNhbGxiYWNrIC0gU2V0dGxlbWVudCBjYWxsYmFjay5cbiAgICAgICAqL1xuICAgICAgY29uc3QgZmluaXNoID0gKHtkZXN0cm95ID0gZmFsc2V9LCBjYWxsYmFjaykgPT4ge1xuICAgICAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuICAgICAgICBmaW5pc2hlZCA9IHRydWVcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0KVxuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoXCJjb25uZWN0XCIsIG9uQ29ubmVjdClcbiAgICAgICAganNvblNvY2tldC5yZW1vdmVBbGxMaXN0ZW5lcnMoKVxuICAgICAgICBpZiAoZGVzdHJveSkganNvblNvY2tldC5kZXN0cm95KClcbiAgICAgICAgZWxzZSBqc29uU29ja2V0LmNsb3NlKClcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4gZmluaXNoKHtkZXN0cm95OiB0cnVlfSwgKCkgPT4gcmVqZWN0KHNpZ25hbC5yZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHNpZ25hbC5yZWFzb24gOiBuZXcgRXJyb3IoXCJCYWNrZ3JvdW5kIGpvYnMgbGlmZWN5Y2xlIHJlcXVlc3QgYWJvcnRlZFwiKSkpXG4gICAgICBjb25zdCBvbkNvbm5lY3QgPSAoKSA9PiB7XG4gICAgICAgIGpzb25Tb2NrZXQuc2VuZCh7XG4gICAgICAgICAgdHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtbGlmZWN5Y2xlXCIsXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGdlbmVyYXRpb25JZDogdGhpcy5nZW5lcmF0aW9uSWQsXG4gICAgICAgICAgcmVxdWVzdElkXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydClcbiAgICAgIGpzb25Tb2NrZXQub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KGVycm9yKSkpXG4gICAgICBqc29uU29ja2V0Lm9uKFwiY2xvc2VcIiwgKCkgPT4gZmluaXNoKHtkZXN0cm95OiB0cnVlfSwgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihcIkJhY2tncm91bmQgam9icyBsaWZlY3ljbGUgc29ja2V0IGNsb3NlZCBiZWZvcmUgYWNrbm93bGVkZ2VtZW50XCIpKSkpXG4gICAgICBqc29uU29ja2V0Lm9uKFwibWVzc2FnZVwiLCAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZT8ucmVxdWVzdElkICE9PSByZXF1ZXN0SWQgfHwgbWVzc2FnZS5hY3Rpb24gIT09IGFjdGlvbikge1xuICAgICAgICAgIGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihcIkJhY2tncm91bmQgam9icyBsaWZlY3ljbGUgcmVzcG9uc2UgZGlkIG5vdCBtYXRjaCBpdHMgcmVxdWVzdFwiKSkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gXCJiYWNrZ3JvdW5kLWpvYnMtbGlmZWN5Y2xlLWVycm9yXCIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlLmVycm9yPy5tZXNzYWdlIHx8IFwiQmFja2dyb3VuZCBqb2JzIGxpZmVjeWNsZSByZXF1ZXN0IGZhaWxlZFwiKVxuICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5lcnJvcj8ubmFtZSA9PT0gXCJzdHJpbmdcIikgZXJyb3IubmFtZSA9IG1lc3NhZ2UuZXJyb3IubmFtZVxuICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZS5lcnJvcj8uc3RhY2sgPT09IFwic3RyaW5nXCIpIGVycm9yLnN0YWNrID0gbWVzc2FnZS5lcnJvci5zdGFja1xuICAgICAgICAgIGZpbmlzaCh7fSwgKCkgPT4gcmVqZWN0KGVycm9yKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBcImJhY2tncm91bmQtam9icy1saWZlY3ljbGUtYWNrXCIgfHwgbWVzc2FnZS5nZW5lcmF0aW9uSWQgIT09IHRoaXMuZ2VuZXJhdGlvbklkKSB7XG4gICAgICAgICAgZmluaXNoKHt9LCAoKSA9PiByZWplY3QobmV3IEVycm9yKFwiSW52YWxpZCBiYWNrZ3JvdW5kIGpvYnMgbGlmZWN5Y2xlIGFja25vd2xlZGdlbWVudFwiKSkpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZmluaXNoKHt9LCAoKSA9PiByZXNvbHZlKG1lc3NhZ2UubGlmZWN5Y2xlU3RhdGUpKVxuICAgICAgfSlcbiAgICAgIHNvY2tldC5vbmNlKFwiY29ubmVjdFwiLCBvbkNvbm5lY3QpXG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIG9uQWJvcnQoKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -508,6 +508,15 @@ export default class BackgroundJobsWorker {
|
|
|
508
508
|
* @returns {number} - Number of children the pool may still spawn.
|
|
509
509
|
*/
|
|
510
510
|
_spawnablePooledChildren(): number;
|
|
511
|
+
/**
|
|
512
|
+
* Counts live children still able to run new work. The pool must always
|
|
513
|
+
* keep — or restore, through the bounded over-cap liveness replacement — at
|
|
514
|
+
* least one non-retiring child: with every live child retiring, advertised
|
|
515
|
+
* capacity is zero for the entire drain window, which can stretch to the
|
|
516
|
+
* longest in-flight job, and dispatch silently stalls.
|
|
517
|
+
* @returns {number} - Number of non-retiring pooled children.
|
|
518
|
+
*/
|
|
519
|
+
_nonRetiringPooledChildCount(): number;
|
|
511
520
|
/**
|
|
512
521
|
* Resolves once a non-retiring pooled child has a free concurrency slot or the
|
|
513
522
|
* pool may spawn a new one. Pooled jobs admitted while the pool is at its
|
|
@@ -606,10 +615,17 @@ export default class BackgroundJobsWorker {
|
|
|
606
615
|
* Creates a reusable pooled child, enforcing the hard cap on total live
|
|
607
616
|
* children (working + draining). Returns undefined when the cap is already
|
|
608
617
|
* met — the only way a new child may exist is a slot being open, so the
|
|
609
|
-
* caller re-checks and waits again.
|
|
618
|
+
* caller re-checks and waits again. `allowOverCap` is reserved for the
|
|
619
|
+
* bounded liveness replacement: at most one child beyond the cap may exist,
|
|
620
|
+
* and only when every other live child is already retiring (see
|
|
621
|
+
* `_beginRetirePooledChild` for the gate).
|
|
622
|
+
* @param {object} [args] - Spawn options.
|
|
623
|
+
* @param {boolean} [args.allowOverCap] - Allow one over-cap spawn for the liveness replacement.
|
|
610
624
|
* @returns {import("node:child_process").ChildProcess | undefined} - The new child, or undefined when the pool is at its cap.
|
|
611
625
|
*/
|
|
612
|
-
_createPooledChild(
|
|
626
|
+
_createPooledChild({ allowOverCap }?: {
|
|
627
|
+
allowOverCap?: boolean;
|
|
628
|
+
}): import("node:child_process").ChildProcess | undefined;
|
|
613
629
|
/**
|
|
614
630
|
* Handles a pooled child's per-job durable-report acknowledgement. A child
|
|
615
631
|
* runs jobs concurrently and reports one `job-outcome` per job id.
|
|
@@ -679,14 +695,33 @@ export default class BackgroundJobsWorker {
|
|
|
679
695
|
* cap — eagerly spawns a single replacement (1-for-1) so its capacity is
|
|
680
696
|
* restored immediately without waiting for it to finish draining. The
|
|
681
697
|
* replacement spawn is gated by the cap (the retiring child still counts as
|
|
682
|
-
* live until it exits), so a full pool
|
|
683
|
-
*
|
|
684
|
-
*
|
|
685
|
-
*
|
|
698
|
+
* live until it exits), so a full pool defers the replacement to the drain
|
|
699
|
+
* path. One bounded exception keeps the pool from ever advertising zero
|
|
700
|
+
* capacity: when this mark leaves no non-retiring child, a single liveness
|
|
701
|
+
* replacement spawns over the cap — live children stay bounded at
|
|
702
|
+
* `pooledRunnerCount + 1`, and the extra child is absorbed by the next
|
|
703
|
+
* draining exit. Without it, a full retirement wave (e.g. every child
|
|
704
|
+
* crossing the peak-RSS threshold after the same memory burst) silently
|
|
705
|
+
* removes all pooled capacity for the whole drain window, which can stretch
|
|
706
|
+
* to the longest in-flight job. When even the liveness spawn is unavailable
|
|
707
|
+
* (an over-cap child is already draining), the starvation is logged so it is
|
|
708
|
+
* visible instead of silent. The retiring child stops receiving new jobs and
|
|
709
|
+
* is terminated only once its in-flight set drains, so a long-running job
|
|
710
|
+
* (e.g. a build) is never cut off.
|
|
686
711
|
* @param {import("node:child_process").ChildProcess} child - Child to retire.
|
|
687
712
|
* @returns {void}
|
|
688
713
|
*/
|
|
689
714
|
_beginRetirePooledChild(child: import("node:child_process").ChildProcess): void;
|
|
715
|
+
/**
|
|
716
|
+
* Logs one compact pooled-capacity event to the worker's own stderr (the
|
|
717
|
+
* surface that reaches the production log). Used by the bounded liveness
|
|
718
|
+
* replacement in `_beginRetirePooledChild`: the spawn that keeps dispatch
|
|
719
|
+
* alive through a full retirement wave, or the bounded starvation when an
|
|
720
|
+
* over-cap child is already draining and the pool must wait for an exit.
|
|
721
|
+
* @param {"pooled-capacity-liveness-spawn" | "pooled-capacity-starved"} event - Event name.
|
|
722
|
+
* @returns {void}
|
|
723
|
+
*/
|
|
724
|
+
_logPooledCapacityEvent(event: "pooled-capacity-liveness-spawn" | "pooled-capacity-starved"): void;
|
|
690
725
|
/**
|
|
691
726
|
* Terminates a retiring pooled child once it has no in-flight jobs left.
|
|
692
727
|
* @param {import("node:child_process").ChildProcess} child - Child to check.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/worker.js"],"names":[],"mappings":"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"}
|