deno
115e51cc - fix(ext/node): fix worker event loop cleanup for postMessageToThread

Commit
115 days ago
fix(ext/node): fix worker event loop cleanup for postMessageToThread Fix the mainThreadPort keeping worker event loops alive after receiving cross-thread messages. The root cause: transferred MessagePorts lose their nodeWorkerThreadCloseCb property, which the MessagePort recv loop needs to properly unref promises. Without it, new recv promises after the first message stay refed, preventing the worker from exiting. The fix sets nodeWorkerThreadCloseCb on transferred ports in both setupMainThreadPort (worker side) and the MSG_REGISTER handler (main thread side for sub-worker routing). Also enables 3 Node.js compat tests: - test-worker-messaging-errors-handler.js - test-worker-messaging-errors-invalid.js - test-worker-messaging-errors-timeout.js Note: test-worker-messaging.js (full 7-thread tree) works correctly for message routing but hangs due to a separate BroadcastChannel issue where close() cancels messages posted just before it.
Author
Parents
Loading