diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-11-27 14:19:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-27 14:19:24 +0100 |
commit | 22f951aa67c5b677d156ec338f71714cf2d4ddb2 (patch) | |
tree | 58537dffb4aa0f3c3b2a348c99466cb89919c835 /cli/tests/no_mem_cache.js | |
parent | 28869a632d190dc29d78738bc5e90eadf99bc824 (diff) |
fix: panic in worker when closing at top level (#8510)
Fixes panic occurring in worker when "self.close()" is called
at the top level, ie. worker shuts down while
module evaluation promise hasn't yet resolved.
Diffstat (limited to 'cli/tests/no_mem_cache.js')
-rw-r--r-- | cli/tests/no_mem_cache.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/tests/no_mem_cache.js b/cli/tests/no_mem_cache.js new file mode 100644 index 000000000..a486732b6 --- /dev/null +++ b/cli/tests/no_mem_cache.js @@ -0,0 +1,33 @@ +const fixtureFile = await Deno.makeTempFile(); +let prefix = "file://"; +if (Deno.build.os == "windows") { + prefix += "/"; +} +const fixtureUrl = new URL(`${prefix}${fixtureFile}`); +let resolve; + +let p = new Promise((res) => resolve = res); + +await Deno.writeTextFile(fixtureUrl, `self.postMessage("hello");\n`); + +const workerA = new Worker(fixtureUrl.href, { type: "module" }); +workerA.onmessage = (msg) => { + console.log(msg.data); + resolve(); +}; + +await p; +workerA.terminate(); + +p = new Promise((res) => resolve = res); + +await Deno.writeTextFile(fixtureUrl, `self.postMessage("goodbye");\n`); + +const workerB = new Worker(fixtureUrl.href, { type: "module" }); +workerB.onmessage = (msg) => { + console.log(msg.data); + resolve(); +}; + +await p; +workerB.terminate(); |