From 55c58b88ff57d23552a8f7fd0520a18257bfa016 Mon Sep 17 00:00:00 2001 From: Tudor Zaharia Date: Tue, 25 Aug 2026 21:31:18 +0200 Subject: [PATCH 1/4] do not write process.exitCode on exit --- packages/pglite/src/pglite.ts | 11 ++--------- packages/pglite/tests/basic.test.ts | 12 ++++++------ postgres-pglite | 2 +- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/packages/pglite/src/pglite.ts b/packages/pglite/src/pglite.ts index 517a4376a..f10161849 100644 --- a/packages/pglite/src/pglite.ts +++ b/packages/pglite/src/pglite.ts @@ -820,25 +820,18 @@ export class PGlite this.#ready = false this.#running = false - const exitCode = pglUtils.pgliteProc.exitCode try { // exit the runtime. since we're using `noExitRuntime: true` on our module, // we need to do this explicitly - // this sets process.exitCode to 0 this.mod!._emscripten_force_exit(0) - // clear mod to release memory - this.mod = undefined } catch (e: any) { this.#log(e) if (e.status !== 0) { this.#log('Error when exiting', e.toString()) } } finally { - try { - pglUtils.pgliteProc.exitCode = exitCode - } catch { - // some envs do not allow setting the exitCode, swallow - } + // clear mod to release memory + this.mod = undefined } } diff --git a/packages/pglite/tests/basic.test.ts b/packages/pglite/tests/basic.test.ts index c21c34cfd..68d9b3b0f 100644 --- a/packages/pglite/tests/basic.test.ts +++ b/packages/pglite/tests/basic.test.ts @@ -800,25 +800,25 @@ await testEsmCjsAndDTC(async (importType) => { expect(process.exitCode).toEqual(origExitCode) }) - it('restores process.exitCode on close', async () => { + it('restores undefined process.exitCode on close', async () => { const origExitCode = process.exitCode - process.exitCode = 42 + process.exitCode = undefined try { await db.close() - expect(process.exitCode).toEqual(42) + expect(process.exitCode).toEqual(undefined) } finally { process.exitCode = origExitCode } }) - it('restores undefined process.exitCode on close', async () => { + it('restores process.exitCode on close', async () => { const origExitCode = process.exitCode - process.exitCode = undefined + process.exitCode = 42 try { await db.close() - expect(process.exitCode).toEqual(undefined) + expect(process.exitCode).toEqual(42) } finally { process.exitCode = origExitCode } diff --git a/postgres-pglite b/postgres-pglite index 6dab6d9c3..57f29b88a 160000 --- a/postgres-pglite +++ b/postgres-pglite @@ -1 +1 @@ -Subproject commit 6dab6d9c37607f32b56d4778b6de95ac0d7438fc +Subproject commit 57f29b88a77e4c35ba0aebc59f84e5407d832055 From 52f2f9a5630c3af830c28db8d222964ee6a2454a Mon Sep 17 00:00:00 2001 From: Tudor Zaharia Date: Tue, 25 Aug 2026 21:32:39 +0200 Subject: [PATCH 2/4] changeset --- .changeset/red-years-pump.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/red-years-pump.md diff --git a/.changeset/red-years-pump.md b/.changeset/red-years-pump.md new file mode 100644 index 000000000..a2410e40b --- /dev/null +++ b/.changeset/red-years-pump.md @@ -0,0 +1,5 @@ +--- +'@electric-sql/pglite': patch +--- + +Do not set process.exitCode at all From e26eb59aee708ae137872d9a4bfab3347984b8f3 Mon Sep 17 00:00:00 2001 From: Tudor Zaharia Date: Tue, 25 Aug 2026 21:40:59 +0200 Subject: [PATCH 3/4] submodule --- postgres-pglite | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgres-pglite b/postgres-pglite index 57f29b88a..b133782cd 160000 --- a/postgres-pglite +++ b/postgres-pglite @@ -1 +1 @@ -Subproject commit 57f29b88a77e4c35ba0aebc59f84e5407d832055 +Subproject commit b133782cd759f08b3aeb263b80a963b39c7b7af1 From b6ed5c8191a69128795f83f59751da2506078507 Mon Sep 17 00:00:00 2001 From: Tudor Zaharia Date: Wed, 26 Aug 2026 15:11:44 +0200 Subject: [PATCH 4/4] tests --- packages/pglite/package.json | 2 +- packages/pglite/tests/basic.test.ts | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/pglite/package.json b/packages/pglite/package.json index 4f0e9b34f..9aa1d494d 100644 --- a/packages/pglite/package.json +++ b/packages/pglite/package.json @@ -125,7 +125,7 @@ "test": "pnpm test:basic && pnpm test:node", "test:basic": "pnpm test:clean && vitest tests/*.test.js tests/*.test.ts tests/**/*.test.js tests/**/*.test.ts", "test:web": "pnpm test:clean && concurrently -s first --hide 1 --prefix none -k \"sleep 2 && vitest --fileParallelism false tests/targets/web/*.test.web.*\" \"npx http-server --port 3334 ./\"", - "test:bun": "pnpm test:clean && pnpm bun test --timeout 15000 tests/basic.test.js tests/pgvector.test.js tests/live.test.js tests/targets/runtimes/node-fs.test.js", + "test:bun": "pnpm test:clean && bun test --timeout 15000 tests/basic.test.ts tests/live.test.ts tests/targets/runtimes/node-fs.test.js", "test:deno": "cd tests/targets/deno && deno task test", "test:node": "pnpm test:clean && pnpm vitest tests/targets/runtimes/node-*.test.js", "test:runtimes": "pnpm test:bun && pnpm test:node", diff --git a/packages/pglite/tests/basic.test.ts b/packages/pglite/tests/basic.test.ts index 68d9b3b0f..a4928642c 100644 --- a/packages/pglite/tests/basic.test.ts +++ b/packages/pglite/tests/basic.test.ts @@ -801,15 +801,9 @@ await testEsmCjsAndDTC(async (importType) => { }) it('restores undefined process.exitCode on close', async () => { - const origExitCode = process.exitCode - process.exitCode = undefined - - try { - await db.close() - expect(process.exitCode).toEqual(undefined) - } finally { - process.exitCode = origExitCode - } + expect(process.exitCode).toBeUndefined() + await db.close() + expect(process.exitCode).toBeUndefined() }) it('restores process.exitCode on close', async () => {