GeezerVison is showing github.com — src,test: add regression test for nested Worker termination · nodejs/node@055c568
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: src/env.cc +2Lines changed: 2 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -978,6 +978,8 @@ void Environment::Exit(int exit_code) { |
978 | 978 | } |
979 | 979 |
|
980 | 980 | void Environment::stop_sub_worker_contexts() { |
| 981 | + DCHECK_EQ(Isolate::GetCurrent(), isolate()); |
| 982 | + |
981 | 983 | while (!sub_worker_contexts_.empty()) { |
982 | 984 | Worker* w = *sub_worker_contexts_.begin(); |
983 | 985 | remove_sub_worker_context(w); |
|
Collapse file
Copy file name to clipboard +15Lines changed: 15 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +'use strict'; |
| 2 | +const common = require('../common'); |
| 3 | +const { Worker } = require('worker_threads'); |
| 4 | + |
| 5 | +// Check that a Worker that's running another Worker can be terminated. |
| 6 | + |
| 7 | +const worker = new Worker(` |
| 8 | +const { Worker, parentPort } = require('worker_threads'); |
| 9 | +const worker = new Worker('setInterval(() => {}, 10);', { eval: true }); |
| 10 | +worker.on('online', () => { |
| 11 | + parentPort.postMessage({}); |
| 12 | +}); |
| 13 | +`, { eval: true }); |
| 14 | + |
| 15 | +worker.on('message', common.mustCall(() => worker.terminate())); |