@namzu/sandbox 6.0.1 → 7.0.0
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/CHANGELOG.md +44 -0
- package/README.md +2 -0
- package/dist/backends/aci-standby-pool/index.d.ts.map +1 -1
- package/dist/backends/aci-standby-pool/index.js +70 -31
- package/dist/backends/aci-standby-pool/index.js.map +1 -1
- package/dist/backends/docker/index.d.ts.map +1 -1
- package/dist/backends/docker/index.js +105 -36
- package/dist/backends/docker/index.js.map +1 -1
- package/dist/backends/firecracker/index.d.ts.map +1 -1
- package/dist/backends/firecracker/index.js +43 -25
- package/dist/backends/firecracker/index.js.map +1 -1
- package/dist/backends/firecracker/transport.d.ts +3 -3
- package/dist/backends/firecracker/transport.d.ts.map +1 -1
- package/dist/backends/firecracker/transport.js +82 -40
- package/dist/backends/firecracker/transport.js.map +1 -1
- package/dist/backends/readiness.d.ts +43 -0
- package/dist/backends/readiness.d.ts.map +1 -0
- package/dist/backends/readiness.js +150 -0
- package/dist/backends/readiness.js.map +1 -0
- package/dist/egress/proxy.d.ts.map +1 -1
- package/dist/egress/proxy.js +20 -3
- package/dist/egress/proxy.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
- package/src/backends/aci-standby-pool/index.ts +99 -30
- package/src/backends/docker/index.ts +135 -44
- package/src/backends/firecracker/index.ts +49 -21
- package/src/backends/firecracker/transport.ts +87 -38
- package/src/backends/readiness.ts +173 -0
- package/src/egress/proxy.ts +18 -3
- package/src/index.ts +27 -0
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
*/
|
|
55
55
|
import net from 'node:net';
|
|
56
56
|
import tls from 'node:tls';
|
|
57
|
+
import { OperationDeadline, OperationDeadlineExpired } from '../readiness.js';
|
|
57
58
|
import { ExecResultAccumulator, parseExecLine, } from './protocol.js';
|
|
58
59
|
const DEFAULT_CONNECT_TIMEOUT_MS = 5_000;
|
|
59
60
|
const DEFAULT_CONNECT_RETRY_BUDGET_MS = 30_000;
|
|
@@ -126,53 +127,58 @@ export class VsockAgentTransport {
|
|
|
126
127
|
* failures (ECONNREFUSED while the agent re-listens after a resume,
|
|
127
128
|
* a dropped CONNECT ack) until the budget is exhausted.
|
|
128
129
|
*/
|
|
129
|
-
async dial() {
|
|
130
|
+
async dial(signal) {
|
|
130
131
|
const deadline = Date.now() + this.connectRetryBudgetMs;
|
|
131
132
|
let lastErr;
|
|
132
133
|
for (;;) {
|
|
134
|
+
signal?.throwIfAborted();
|
|
133
135
|
try {
|
|
134
|
-
return await this.connectOnce();
|
|
136
|
+
return await this.connectOnce(signal);
|
|
135
137
|
}
|
|
136
138
|
catch (err) {
|
|
139
|
+
if (signal?.aborted)
|
|
140
|
+
throw signal.reason;
|
|
137
141
|
lastErr = err;
|
|
138
142
|
if (Date.now() >= deadline)
|
|
139
143
|
break;
|
|
140
|
-
await delay(this.connectRetryIntervalMs);
|
|
144
|
+
await delay(this.connectRetryIntervalMs, signal);
|
|
141
145
|
}
|
|
142
146
|
}
|
|
143
147
|
throw new Error(`vsock transport: could not connect to agent within ${this.connectRetryBudgetMs}ms (handle=${describeHandle(this.handle)}): ${lastErr instanceof Error ? lastErr.message : String(lastErr)}`, { cause: lastErr });
|
|
144
148
|
}
|
|
145
|
-
connectOnce() {
|
|
149
|
+
connectOnce(signal) {
|
|
146
150
|
const handle = this.handle;
|
|
147
151
|
if (handle.kind === 'mtls')
|
|
148
|
-
return this.connectOnceMtls(handle);
|
|
152
|
+
return this.connectOnceMtls(handle, signal);
|
|
149
153
|
return new Promise((resolve, reject) => {
|
|
150
154
|
const path = handle.kind === 'unix' ? handle.path : handle.udsPath;
|
|
151
155
|
const socket = net.connect({ path });
|
|
152
156
|
let settled = false;
|
|
153
|
-
const timer = setTimeout(() => {
|
|
154
|
-
if (settled)
|
|
155
|
-
return;
|
|
156
|
-
settled = true;
|
|
157
|
-
socket.destroy();
|
|
158
|
-
reject(new Error(`connect/handshake timed out after ${this.connectTimeoutMs}ms`));
|
|
159
|
-
}, this.connectTimeoutMs);
|
|
160
|
-
timer.unref();
|
|
161
157
|
const fail = (err) => {
|
|
162
158
|
if (settled)
|
|
163
159
|
return;
|
|
164
160
|
settled = true;
|
|
165
161
|
clearTimeout(timer);
|
|
162
|
+
signal?.removeEventListener('abort', abort);
|
|
166
163
|
socket.destroy();
|
|
167
164
|
reject(err);
|
|
168
165
|
};
|
|
166
|
+
const abort = () => fail(signalError(signal));
|
|
167
|
+
const timer = setTimeout(() => fail(new Error(`connect/handshake timed out after ${this.connectTimeoutMs}ms`)), this.connectTimeoutMs);
|
|
168
|
+
timer.unref();
|
|
169
169
|
socket.once('error', fail);
|
|
170
|
+
if (signal?.aborted) {
|
|
171
|
+
abort();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
170
175
|
socket.once('connect', () => {
|
|
171
176
|
if (handle.kind === 'unix') {
|
|
172
177
|
if (settled)
|
|
173
178
|
return;
|
|
174
179
|
settled = true;
|
|
175
180
|
clearTimeout(timer);
|
|
181
|
+
signal?.removeEventListener('abort', abort);
|
|
176
182
|
socket.removeListener('error', fail);
|
|
177
183
|
resolve(socket);
|
|
178
184
|
return;
|
|
@@ -196,6 +202,7 @@ export class VsockAgentTransport {
|
|
|
196
202
|
return;
|
|
197
203
|
settled = true;
|
|
198
204
|
clearTimeout(timer);
|
|
205
|
+
signal?.removeEventListener('abort', abort);
|
|
199
206
|
socket.removeListener('error', fail);
|
|
200
207
|
// Any bytes the ackReader over-read after the ack line are
|
|
201
208
|
// application framing; replay them into the caller.
|
|
@@ -230,7 +237,7 @@ export class VsockAgentTransport {
|
|
|
230
237
|
* `OK` ack first, this arm must await that line (mirroring the vsock
|
|
231
238
|
* CONNECT-ack path) before resolving — today it does not.
|
|
232
239
|
*/
|
|
233
|
-
connectOnceMtls(handle) {
|
|
240
|
+
connectOnceMtls(handle, signal) {
|
|
234
241
|
return new Promise((resolve, reject) => {
|
|
235
242
|
const socket = tls.connect({
|
|
236
243
|
host: handle.host,
|
|
@@ -243,23 +250,24 @@ export class VsockAgentTransport {
|
|
|
243
250
|
minVersion: 'TLSv1.3',
|
|
244
251
|
});
|
|
245
252
|
let settled = false;
|
|
246
|
-
const timer = setTimeout(() => {
|
|
247
|
-
if (settled)
|
|
248
|
-
return;
|
|
249
|
-
settled = true;
|
|
250
|
-
socket.destroy();
|
|
251
|
-
reject(new Error(`connect/handshake timed out after ${this.connectTimeoutMs}ms`));
|
|
252
|
-
}, this.connectTimeoutMs);
|
|
253
|
-
timer.unref();
|
|
254
253
|
const fail = (err) => {
|
|
255
254
|
if (settled)
|
|
256
255
|
return;
|
|
257
256
|
settled = true;
|
|
258
257
|
clearTimeout(timer);
|
|
258
|
+
signal?.removeEventListener('abort', abort);
|
|
259
259
|
socket.destroy();
|
|
260
260
|
reject(err);
|
|
261
261
|
};
|
|
262
|
+
const abort = () => fail(signalError(signal));
|
|
263
|
+
const timer = setTimeout(() => fail(new Error(`connect/handshake timed out after ${this.connectTimeoutMs}ms`)), this.connectTimeoutMs);
|
|
264
|
+
timer.unref();
|
|
262
265
|
socket.once('error', fail);
|
|
266
|
+
if (signal?.aborted) {
|
|
267
|
+
abort();
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
263
271
|
// `secureConnect` fires only after the cert chain is verified
|
|
264
272
|
// (rejectUnauthorized rejects a bad/missing-CA server via 'error'
|
|
265
273
|
// before this). Belt-and-suspenders: assert `authorized` too.
|
|
@@ -272,6 +280,7 @@ export class VsockAgentTransport {
|
|
|
272
280
|
}
|
|
273
281
|
settled = true;
|
|
274
282
|
clearTimeout(timer);
|
|
283
|
+
signal?.removeEventListener('abort', abort);
|
|
275
284
|
socket.removeListener('error', fail);
|
|
276
285
|
// Routing preamble — the host-relay analogue of the vsock
|
|
277
286
|
// `CONNECT <port>` line. The relay consumes it, resolves the
|
|
@@ -287,29 +296,25 @@ export class VsockAgentTransport {
|
|
|
287
296
|
* healthz). Applies the read-idle timeout so a post-resume hung read
|
|
288
297
|
* is torn down rather than wedging the caller.
|
|
289
298
|
*/
|
|
290
|
-
async request(req) {
|
|
291
|
-
const socket = await this.dial();
|
|
299
|
+
async request(req, signal) {
|
|
300
|
+
const socket = await this.dial(signal);
|
|
292
301
|
return await new Promise((resolve, reject) => {
|
|
293
302
|
const reader = new FrameReader();
|
|
294
303
|
let settled = false;
|
|
295
|
-
const idle = new IdleTimer(this.readIdleTimeoutMs, () => {
|
|
296
|
-
if (settled)
|
|
297
|
-
return;
|
|
298
|
-
settled = true;
|
|
299
|
-
socket.destroy();
|
|
300
|
-
reject(new Error(`vsock transport: read idle timeout after ${this.readIdleTimeoutMs}ms`));
|
|
301
|
-
});
|
|
302
304
|
const finish = (err, value) => {
|
|
303
305
|
if (settled)
|
|
304
306
|
return;
|
|
305
307
|
settled = true;
|
|
306
308
|
idle.clear();
|
|
309
|
+
signal?.removeEventListener('abort', abort);
|
|
307
310
|
socket.destroy();
|
|
308
311
|
if (err)
|
|
309
312
|
reject(err);
|
|
310
313
|
else
|
|
311
314
|
resolve(value);
|
|
312
315
|
};
|
|
316
|
+
const abort = () => finish(signalError(signal));
|
|
317
|
+
const idle = new IdleTimer(this.readIdleTimeoutMs, () => finish(new Error(`vsock transport: read idle timeout after ${this.readIdleTimeoutMs}ms`)));
|
|
313
318
|
socket.on('data', (chunk) => {
|
|
314
319
|
idle.bump();
|
|
315
320
|
let frames;
|
|
@@ -332,6 +337,11 @@ export class VsockAgentTransport {
|
|
|
332
337
|
});
|
|
333
338
|
socket.once('error', (err) => finish(err));
|
|
334
339
|
socket.once('close', () => finish(new Error('vsock transport: socket closed before reply')));
|
|
340
|
+
if (signal?.aborted) {
|
|
341
|
+
abort();
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
335
345
|
idle.bump();
|
|
336
346
|
socket.write(frame(JSON.stringify(req)));
|
|
337
347
|
});
|
|
@@ -410,12 +420,14 @@ export class VsockAgentTransport {
|
|
|
410
420
|
});
|
|
411
421
|
}
|
|
412
422
|
/** Liveness probe. Returns true on an `{ ok: true }` healthz reply. */
|
|
413
|
-
async healthz() {
|
|
423
|
+
async healthz(signal) {
|
|
414
424
|
try {
|
|
415
|
-
const res = await this.request({ op: 'healthz' });
|
|
425
|
+
const res = await this.request({ op: 'healthz' }, signal);
|
|
416
426
|
return res.ok === true;
|
|
417
427
|
}
|
|
418
428
|
catch {
|
|
429
|
+
if (signal?.aborted)
|
|
430
|
+
throw signal.reason;
|
|
419
431
|
return false;
|
|
420
432
|
}
|
|
421
433
|
}
|
|
@@ -425,19 +437,28 @@ export class VsockAgentTransport {
|
|
|
425
437
|
* (which already carries connect retry) — used by the backend's
|
|
426
438
|
* post-create readiness fence.
|
|
427
439
|
*/
|
|
428
|
-
async waitForReady(timeoutMs, pollIntervalMs) {
|
|
429
|
-
const deadline =
|
|
440
|
+
async waitForReady(timeoutMs, pollIntervalMs, signal) {
|
|
441
|
+
const deadline = new OperationDeadline(timeoutMs, 'firecracker agent readiness', signal);
|
|
430
442
|
let lastErr;
|
|
431
|
-
while (
|
|
443
|
+
while (deadline.remainingMs() > 0) {
|
|
432
444
|
try {
|
|
433
|
-
if (await this.healthz())
|
|
445
|
+
if (await deadline.run((signal) => this.healthz(signal)))
|
|
434
446
|
return;
|
|
435
447
|
lastErr = new Error('healthz returned not-ok');
|
|
436
448
|
}
|
|
437
449
|
catch (err) {
|
|
438
450
|
lastErr = err;
|
|
451
|
+
if (err instanceof OperationDeadlineExpired)
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
try {
|
|
455
|
+
await deadline.delay(pollIntervalMs);
|
|
456
|
+
}
|
|
457
|
+
catch (err) {
|
|
458
|
+
if (err instanceof OperationDeadlineExpired)
|
|
459
|
+
break;
|
|
460
|
+
throw err;
|
|
439
461
|
}
|
|
440
|
-
await delay(pollIntervalMs);
|
|
441
462
|
}
|
|
442
463
|
throw new Error(`vsock transport: agent did not become ready within ${timeoutMs}ms: ${lastErr instanceof Error ? lastErr.message : String(lastErr)}`);
|
|
443
464
|
}
|
|
@@ -505,8 +526,29 @@ class IdleTimer {
|
|
|
505
526
|
this.timer = undefined;
|
|
506
527
|
}
|
|
507
528
|
}
|
|
508
|
-
function delay(ms) {
|
|
509
|
-
return new Promise((resolve) =>
|
|
529
|
+
function delay(ms, signal) {
|
|
530
|
+
return new Promise((resolve, reject) => {
|
|
531
|
+
if (signal?.aborted) {
|
|
532
|
+
reject(signalError(signal));
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
const finish = (err) => {
|
|
536
|
+
clearTimeout(timer);
|
|
537
|
+
signal?.removeEventListener('abort', abort);
|
|
538
|
+
if (err === undefined)
|
|
539
|
+
resolve();
|
|
540
|
+
else
|
|
541
|
+
reject(err);
|
|
542
|
+
};
|
|
543
|
+
const abort = () => finish(signalError(signal));
|
|
544
|
+
const timer = setTimeout(() => finish(), ms);
|
|
545
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
function signalError(signal) {
|
|
549
|
+
if (signal?.reason instanceof Error)
|
|
550
|
+
return signal.reason;
|
|
551
|
+
return new Error(signal?.reason === undefined ? 'operation aborted' : String(signal.reason));
|
|
510
552
|
}
|
|
511
553
|
function describeHandle(handle) {
|
|
512
554
|
switch (handle.kind) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/backends/firecracker/transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/backends/firecracker/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One owner for backend readiness clocks.
|
|
3
|
+
*
|
|
4
|
+
* A timestamp checked between retries is not a deadline when the thing inside
|
|
5
|
+
* a retry can remain pending. This owner races every foreign promise against
|
|
6
|
+
* the remaining operation budget and supplies a private signal so cooperative
|
|
7
|
+
* transports can release their sockets too.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Readiness failure teardown is deliberately a second, short budget. The
|
|
11
|
+
* health deadline has already expired, so pretending cleanup fits inside it
|
|
12
|
+
* either skips cleanup entirely or keeps `create()` pending without a bound.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FAILURE_CLEANUP_GRACE_MS = 1000;
|
|
15
|
+
export interface ReadinessOptions {
|
|
16
|
+
readonly timeoutMs: number;
|
|
17
|
+
readonly pollIntervalMs: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class OperationDeadlineExpired extends Error {
|
|
20
|
+
readonly label: string;
|
|
21
|
+
constructor(label: string);
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveReadinessOptions(owner: string, timeoutMs: number | undefined, pollIntervalMs: number | undefined, defaults: ReadinessOptions): ReadinessOptions;
|
|
24
|
+
export declare class OperationDeadline {
|
|
25
|
+
readonly label: string;
|
|
26
|
+
private readonly callerSignal?;
|
|
27
|
+
private readonly expiresAt;
|
|
28
|
+
constructor(timeoutMs: number, label: string, callerSignal?: AbortSignal | undefined);
|
|
29
|
+
remainingMs(): number;
|
|
30
|
+
run<T>(operation: (signal: AbortSignal) => Promise<T>): Promise<T>;
|
|
31
|
+
delay(maximumMs: number): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare function probeHttpHealth(url: string, signal: AbortSignal): Promise<{
|
|
34
|
+
readonly ok: boolean;
|
|
35
|
+
readonly status: number;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Failure cleanup must never replace or indefinitely delay the primary
|
|
39
|
+
* readiness error. Cooperative cleanup observes the signal; an implementation
|
|
40
|
+
* that ignores it is still detached from the caller by the independent race.
|
|
41
|
+
*/
|
|
42
|
+
export declare function runFailureCleanup(cleanup: (signal: AbortSignal) => Promise<void>, graceMs?: number): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/backends/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAC/B;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAIlC;AAUD,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,QAAQ,EAAE,gBAAgB,GACxB,gBAAgB,CAQlB;AAED,qBAAa,iBAAiB;IAK5B,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAL/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAGjC,SAAS,EAAE,MAAM,EACR,KAAK,EAAE,MAAM,EACL,YAAY,CAAC,EAAE,WAAW,YAAA;IAM5C,WAAW,IAAI,MAAM;IAIf,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA6ClE,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB7C;AAED,wBAAsB,eAAe,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5D;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,EAC/C,OAAO,SAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One owner for backend readiness clocks.
|
|
3
|
+
*
|
|
4
|
+
* A timestamp checked between retries is not a deadline when the thing inside
|
|
5
|
+
* a retry can remain pending. This owner races every foreign promise against
|
|
6
|
+
* the remaining operation budget and supplies a private signal so cooperative
|
|
7
|
+
* transports can release their sockets too.
|
|
8
|
+
*/
|
|
9
|
+
const MAX_NODE_TIMER_MS = 2_147_483_647;
|
|
10
|
+
/**
|
|
11
|
+
* Readiness failure teardown is deliberately a second, short budget. The
|
|
12
|
+
* health deadline has already expired, so pretending cleanup fits inside it
|
|
13
|
+
* either skips cleanup entirely or keeps `create()` pending without a bound.
|
|
14
|
+
*/
|
|
15
|
+
export const FAILURE_CLEANUP_GRACE_MS = 1_000;
|
|
16
|
+
export class OperationDeadlineExpired extends Error {
|
|
17
|
+
label;
|
|
18
|
+
constructor(label) {
|
|
19
|
+
super(`${label} deadline expired`);
|
|
20
|
+
this.label = label;
|
|
21
|
+
this.name = 'OperationDeadlineExpired';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function assertTimerValue(field, value) {
|
|
25
|
+
if (!Number.isSafeInteger(value) || value <= 0 || value > MAX_NODE_TIMER_MS) {
|
|
26
|
+
throw new RangeError(`${field} must be a positive safe integer no greater than ${MAX_NODE_TIMER_MS}; received ${String(value)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function resolveReadinessOptions(owner, timeoutMs, pollIntervalMs, defaults) {
|
|
30
|
+
const resolved = {
|
|
31
|
+
timeoutMs: timeoutMs ?? defaults.timeoutMs,
|
|
32
|
+
pollIntervalMs: pollIntervalMs ?? defaults.pollIntervalMs,
|
|
33
|
+
};
|
|
34
|
+
assertTimerValue(`${owner}.readyTimeoutMs`, resolved.timeoutMs);
|
|
35
|
+
assertTimerValue(`${owner}.readyPollIntervalMs`, resolved.pollIntervalMs);
|
|
36
|
+
return resolved;
|
|
37
|
+
}
|
|
38
|
+
export class OperationDeadline {
|
|
39
|
+
label;
|
|
40
|
+
callerSignal;
|
|
41
|
+
expiresAt;
|
|
42
|
+
constructor(timeoutMs, label, callerSignal) {
|
|
43
|
+
this.label = label;
|
|
44
|
+
this.callerSignal = callerSignal;
|
|
45
|
+
assertTimerValue(`${label} timeout`, timeoutMs);
|
|
46
|
+
this.expiresAt = performance.now() + timeoutMs;
|
|
47
|
+
}
|
|
48
|
+
remainingMs() {
|
|
49
|
+
return Math.max(0, this.expiresAt - performance.now());
|
|
50
|
+
}
|
|
51
|
+
async run(operation) {
|
|
52
|
+
this.callerSignal?.throwIfAborted();
|
|
53
|
+
const remaining = this.remainingMs();
|
|
54
|
+
if (remaining <= 0)
|
|
55
|
+
throw new OperationDeadlineExpired(this.label);
|
|
56
|
+
const controller = new AbortController();
|
|
57
|
+
const expired = new OperationDeadlineExpired(this.label);
|
|
58
|
+
let timer;
|
|
59
|
+
let onCallerAbort;
|
|
60
|
+
const cancelled = this.callerSignal
|
|
61
|
+
? new Promise((_resolve, reject) => {
|
|
62
|
+
onCallerAbort = () => {
|
|
63
|
+
const reason = this.callerSignal?.reason;
|
|
64
|
+
controller.abort(reason);
|
|
65
|
+
reject(reason);
|
|
66
|
+
};
|
|
67
|
+
this.callerSignal?.addEventListener('abort', onCallerAbort, {
|
|
68
|
+
once: true,
|
|
69
|
+
});
|
|
70
|
+
})
|
|
71
|
+
: undefined;
|
|
72
|
+
const expiry = new Promise((_resolve, reject) => {
|
|
73
|
+
timer = setTimeout(() => {
|
|
74
|
+
controller.abort(expired);
|
|
75
|
+
reject(expired);
|
|
76
|
+
}, remaining);
|
|
77
|
+
});
|
|
78
|
+
const pending = Promise.resolve().then(() => operation(controller.signal));
|
|
79
|
+
try {
|
|
80
|
+
const value = await Promise.race(cancelled ? [pending, expiry, cancelled] : [pending, expiry]);
|
|
81
|
+
// Publication fence: a foreign promise that settles at the boundary
|
|
82
|
+
// does not get to turn an already-expired attempt into readiness.
|
|
83
|
+
if (this.callerSignal?.aborted)
|
|
84
|
+
throw this.callerSignal.reason;
|
|
85
|
+
if (controller.signal.aborted || this.remainingMs() <= 0) {
|
|
86
|
+
controller.abort(expired);
|
|
87
|
+
throw expired;
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
if (timer !== undefined)
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
if (onCallerAbort)
|
|
95
|
+
this.callerSignal?.removeEventListener('abort', onCallerAbort);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async delay(maximumMs) {
|
|
99
|
+
await this.run((signal) => new Promise((resolve, reject) => {
|
|
100
|
+
if (signal.aborted) {
|
|
101
|
+
reject(signal.reason);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const finish = (err) => {
|
|
105
|
+
clearTimeout(timer);
|
|
106
|
+
signal.removeEventListener('abort', abort);
|
|
107
|
+
if (err === undefined)
|
|
108
|
+
resolve();
|
|
109
|
+
else
|
|
110
|
+
reject(err);
|
|
111
|
+
};
|
|
112
|
+
const abort = () => {
|
|
113
|
+
finish(signal.reason);
|
|
114
|
+
};
|
|
115
|
+
const timer = setTimeout(() => finish(), maximumMs);
|
|
116
|
+
signal.addEventListener('abort', abort, { once: true });
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export async function probeHttpHealth(url, signal) {
|
|
121
|
+
signal.throwIfAborted();
|
|
122
|
+
const response = await fetch(url, { signal });
|
|
123
|
+
const result = { ok: response.ok, status: response.status };
|
|
124
|
+
try {
|
|
125
|
+
await response.body?.cancel();
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// The status is already known. A body cancellation failure must not
|
|
129
|
+
// hide it; the owning deadline still aborts the transport if needed.
|
|
130
|
+
}
|
|
131
|
+
signal.throwIfAborted();
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Failure cleanup must never replace or indefinitely delay the primary
|
|
136
|
+
* readiness error. Cooperative cleanup observes the signal; an implementation
|
|
137
|
+
* that ignores it is still detached from the caller by the independent race.
|
|
138
|
+
*/
|
|
139
|
+
export async function runFailureCleanup(cleanup, graceMs = FAILURE_CLEANUP_GRACE_MS) {
|
|
140
|
+
const deadline = new OperationDeadline(graceMs, 'sandbox failure cleanup');
|
|
141
|
+
try {
|
|
142
|
+
await deadline.run(cleanup);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// The readiness failure remains primary. Promise.race installed a
|
|
146
|
+
// rejection observer on the losing cleanup promise, so a late failure
|
|
147
|
+
// cannot become an unhandled rejection.
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/backends/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/egress/proxy.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAG1D;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IAClC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACpD;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,eAAe,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID,qBAAa,WAAW;IACvB,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAoB;IACpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;gBAErC,OAAO,EAAE,kBAAkB;IAejC,MAAM,CAAC,IAAI,SAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/egress/proxy.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAG1D;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IAClC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACpD;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,kEAAkE;IAClE,eAAe,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,CAAA;IAChE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID,qBAAa,WAAW;IACvB,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsD;IAC/E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAoB;IACpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;gBAErC,OAAO,EAAE,kBAAkB;IAejC,MAAM,CAAC,IAAI,SAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAqDrC,OAAO;IAWrB,OAAO,CAAC,IAAI;IAIZ;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAKrB,sEAAsE;YACxD,aAAa;IA4F3B;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,aAAa;IAkD3B,yEAAyE;IACzE,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,aAAa;CAGrB"}
|
package/dist/egress/proxy.js
CHANGED
|
@@ -34,6 +34,11 @@ export class EgressProxy {
|
|
|
34
34
|
const server = createServer((req, res) => {
|
|
35
35
|
void this.handleRequest(req, res);
|
|
36
36
|
});
|
|
37
|
+
const connections = new Set();
|
|
38
|
+
server.on('connection', (socket) => {
|
|
39
|
+
connections.add(socket);
|
|
40
|
+
socket.once('close', () => connections.delete(socket));
|
|
41
|
+
});
|
|
37
42
|
server.on('connect', (req, socket, head) => {
|
|
38
43
|
void this.handleConnect(req, socket, head);
|
|
39
44
|
});
|
|
@@ -56,15 +61,24 @@ export class EgressProxy {
|
|
|
56
61
|
// process runs out. Found by a test that hung rather than failed,
|
|
57
62
|
// which is the shape this failure takes in production too.
|
|
58
63
|
this.selfPort = boundPort;
|
|
64
|
+
let closePromise;
|
|
59
65
|
return {
|
|
60
66
|
port: boundPort,
|
|
61
67
|
url: `http://127.0.0.1:${boundPort}`,
|
|
62
68
|
setAllowedHosts: (resolve) => {
|
|
63
69
|
this.resolveAllowed = resolve;
|
|
64
70
|
},
|
|
65
|
-
close: () =>
|
|
66
|
-
|
|
67
|
-
|
|
71
|
+
close: () => {
|
|
72
|
+
closePromise ??= new Promise((resolve) => {
|
|
73
|
+
// `server.close()` waits for existing connections. A readiness
|
|
74
|
+
// failure has no returned Sandbox handle through which those
|
|
75
|
+
// sockets can later be retired, so teardown owns them here.
|
|
76
|
+
for (const socket of connections)
|
|
77
|
+
socket.destroy();
|
|
78
|
+
server.close(() => resolve());
|
|
79
|
+
});
|
|
80
|
+
return closePromise;
|
|
81
|
+
},
|
|
68
82
|
};
|
|
69
83
|
}
|
|
70
84
|
async allowed(host) {
|
|
@@ -232,6 +246,9 @@ export class EgressProxy {
|
|
|
232
246
|
socket.on('error', () => {
|
|
233
247
|
upstream.destroy();
|
|
234
248
|
});
|
|
249
|
+
socket.once('close', () => {
|
|
250
|
+
upstream.destroy();
|
|
251
|
+
});
|
|
235
252
|
}
|
|
236
253
|
/** Whether a target names this proxy. See the loop guard in `listen`. */
|
|
237
254
|
isSelf(host, port) {
|
package/dist/egress/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/egress/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAE/F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AA8E9D,MAAM,aAAa,GAAG,GAAG,CAAA;AAEzB,MAAM,OAAO,WAAW;IACf,cAAc,CAAkC;IACvC,WAAW,CAA+B;IAC1C,cAAc,CAAS;IACvB,QAAQ,CAAsD;IAC/E,sCAAsC;IAC9B,QAAQ,CAAoB;IACpC;;;;;OAKG;IACc,MAAM,CAA0C;IAChD,aAAa,CAAmB;IAEjD,YAAY,OAA2B;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,CAAA;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAA;QAC5C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,cAAc,IAAI,EAAE,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAClC;YACC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,EACD,aAAa,CACb,CAAA;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;QACpB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACxC,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC1C,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAC3C,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5B,+DAA+D;YAC/D,iEAAiE;YACjE,yCAAyC;YACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;gBACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAC3B,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAChC,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACvF,oEAAoE;QACpE,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,kEAAkE;QAClE,2DAA2D;QAC3D,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/egress/proxy.ts"],"names":[],"mappings":"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"}
|