Skip to content

Commit 130398a

Browse files
authored
test: reduce flakiness of different-registry-per-thread
There was an assumption that the `WeakRef` would be kept alive but it seems to not always be true on Windows. This commit makes sure it's kept alive. Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com> PR-URL: nodejs#63209 Fixes: nodejs#63056 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Jordan Harband <ljharb@gmail.com>
1 parent 49aef0d commit 130398a

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
import { isMainThread, Worker } from 'node:worker_threads';
22

3+
const registeredRefs = [];
4+
5+
const ref = { foo: 'foo' };
6+
registeredRefs.push(ref);
7+
38
if (isMainThread) {
4-
process.finalization.register({ foo: 'foo' }, () => {
9+
process.finalization.register(ref, () => {
510
process.stdout.write('shutdown on main thread\n');
611
});
712

813
const worker = new Worker(import.meta.filename);
914

15+
worker.on('error', (err) => {
16+
// Referencing `registeredRefs` here to avoid `ref` being GCed before the worker exits.
17+
console.log(registeredRefs);
18+
throw err;
19+
});
20+
1021
worker.postMessage('ping');
1122
} else {
12-
process.finalization.register({ foo: 'bar' }, () => {
23+
process.finalization.register(ref, () => {
1324
process.stdout.write('shutdown on worker\n');
1425
});
1526
}

test/parallel/test-memory-usage.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ if (r.arrayBuffers > 0) {
4444
const after = process.memoryUsage();
4545
assert.ok(after.external - r.external >= size,
4646
`${after.external} - ${r.external} >= ${size}`);
47-
assert.strictEqual(after.arrayBuffers - r.arrayBuffers, size,
48-
`${after.arrayBuffers} - ${r.arrayBuffers} === ${size}`);
47+
// `arrayBuffers` is process-wide, so unrelated backing stores may be freed
48+
// between the two snapshots. Check that the live ArrayBuffer is included.
49+
assert.ok(after.arrayBuffers >= size,
50+
`${after.arrayBuffers} >= ${size}`);
4951
}

0 commit comments

Comments
 (0)