Skip to content

Commit 8b1ea20

Browse files
committed
fix(test): clean up worker fixture listeners
1 parent bd5a08f commit 8b1ea20

3 files changed

Lines changed: 24 additions & 16 deletions

File tree

docs/adr/0004-isolated-parser-execution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ A representative local Node 24 / Chromium 149 / arm64 macOS sample recorded:
241241
| Core-only fixture | 24,056 B | 7,497 B |
242242
| PostgreSQL transitive worker graph | 321,156 B | 67,396 B |
243243
| BigQuery transitive worker graph | 225,309 B | 50,389 B |
244-
| Complete worker fixture | 549,885 B | 118,160 B |
244+
| Complete worker fixture | 549,893 B | 118,170 B |
245245

246246
The core module trace contained no `node-sql-parser` module. No dialect
247247
resource loaded before explicit construction. A single static module worker

test/worker-placement/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ can run offline after a clean root CI install.
1111

1212
The minified Vite 8 single-worker baseline is 67,396 gzip bytes for the
1313
PostgreSQL transitive graph, 50,389 gzip bytes for the BigQuery transitive
14-
graph, and 118,160 gzip/549,885 raw bytes for the complete worker build output.
14+
graph, and 118,170 gzip/549,893 raw bytes for the complete worker build output.
1515
The PostgreSQL and BigQuery figures each include their transitive shared
1616
chunks; the report also identifies those shared chunks explicitly. The
1717
fail-closed ceilings include small explicit headroom over that measured

test/worker-placement/src/workers.js

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ const REQUEST_TIMEOUT_MS = 10_000;
88
function request(worker, requestValue) {
99
return new Promise((resolve, reject) => {
1010
const startedAt = performance.now();
11-
const timeout = setTimeout(() => {
12-
reject(new Error(`Worker request ${requestValue.id} timed out`));
13-
}, REQUEST_TIMEOUT_MS);
14-
const onError = (event) => {
11+
const cleanup = () => {
1512
clearTimeout(timeout);
13+
worker.removeEventListener("error", onError);
14+
worker.removeEventListener("message", onMessage);
15+
};
16+
const onError = (event) => {
17+
cleanup();
1618
reject(
1719
new Error(
1820
event.message ||
@@ -24,14 +26,16 @@ function request(worker, requestValue) {
2426
if (event.data?.id !== requestValue.id) {
2527
return;
2628
}
27-
clearTimeout(timeout);
28-
worker.removeEventListener("error", onError);
29-
worker.removeEventListener("message", onMessage);
29+
cleanup();
3030
resolve({
3131
response: event.data,
3232
roundTripMs: performance.now() - startedAt,
3333
});
3434
};
35+
const timeout = setTimeout(() => {
36+
cleanup();
37+
reject(new Error(`Worker request ${requestValue.id} timed out`));
38+
}, REQUEST_TIMEOUT_MS);
3539
worker.addEventListener("error", onError, { once: true });
3640
worker.addEventListener("message", onMessage);
3741
worker.postMessage(requestValue);
@@ -40,11 +44,13 @@ function request(worker, requestValue) {
4044

4145
function waitForReady(worker) {
4246
return new Promise((resolve, reject) => {
43-
const timeout = setTimeout(() => {
44-
reject(new Error("Parser worker ready handshake timed out"));
45-
}, REQUEST_TIMEOUT_MS);
46-
const onError = (event) => {
47+
const cleanup = () => {
4748
clearTimeout(timeout);
49+
worker.removeEventListener("error", onError);
50+
worker.removeEventListener("message", onMessage);
51+
};
52+
const onError = (event) => {
53+
cleanup();
4854
reject(
4955
new Error(event.message || "Parser worker startup failed"),
5056
);
@@ -53,11 +59,13 @@ function waitForReady(worker) {
5359
if (event.data?.kind !== "ready") {
5460
return;
5561
}
56-
clearTimeout(timeout);
57-
worker.removeEventListener("error", onError);
58-
worker.removeEventListener("message", onMessage);
62+
cleanup();
5963
resolve(event.data);
6064
};
65+
const timeout = setTimeout(() => {
66+
cleanup();
67+
reject(new Error("Parser worker ready handshake timed out"));
68+
}, REQUEST_TIMEOUT_MS);
6169
worker.addEventListener("error", onError, { once: true });
6270
worker.addEventListener("message", onMessage);
6371
});

0 commit comments

Comments
 (0)