From d69aab62b0789dd54b8c09b54af022a38f060b5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 11 Mar 2024 22:18:03 +0000 Subject: fix(ext/node): make worker setup synchronous (#22815) This commit fixes race condition in "node:worker_threads" module were the first message did a setup of "threadId", "workerData" and "environmentData". Now this data is passed explicitly during workers creation and is set up before any user code is executed. Closes https://github.com/denoland/deno/issues/22783 Closes https://github.com/denoland/deno/issues/22672 --------- Co-authored-by: Satya Rohith --- ext/node/polyfills/02_init.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ext/node/polyfills/02_init.js') diff --git a/ext/node/polyfills/02_init.js b/ext/node/polyfills/02_init.js index 84f8a7cdc..04820b837 100644 --- a/ext/node/polyfills/02_init.js +++ b/ext/node/polyfills/02_init.js @@ -14,6 +14,7 @@ function initialize( usesLocalNodeModulesDir, argv0, runningOnMainThread, + maybeWorkerMetadata, ) { if (initialized) { throw Error("Node runtime already initialized"); @@ -38,7 +39,7 @@ function initialize( // FIXME(bartlomieju): not nice to depend on `Deno` namespace here // but it's the only way to get `args` and `version` and this point. internals.__bootstrapNodeProcess(argv0, Deno.args, Deno.version); - internals.__initWorkerThreads(runningOnMainThread); + internals.__initWorkerThreads(runningOnMainThread, maybeWorkerMetadata); internals.__setupChildProcessIpcChannel(); // `Deno[Deno.internal].requireImpl` will be unreachable after this line. delete internals.requireImpl; -- cgit v1.2.3