mirror of https://github.com/nodejs/node.git
src,test: add regression test for nested Worker termination
This adds a regression test for terminating a Worker inside which another Worker is running. PR-URL: https://github.com/nodejs/node/pull/32623 Refs: https://github.com/nodejs/node/pull/32531 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
This commit is contained in:
parent
f621536d81
commit
e629366fc6
|
@ -1014,6 +1014,8 @@ void Environment::Exit(int exit_code) {
|
|||
}
|
||||
|
||||
void Environment::stop_sub_worker_contexts() {
|
||||
DCHECK_EQ(Isolate::GetCurrent(), isolate());
|
||||
|
||||
while (!sub_worker_contexts_.empty()) {
|
||||
Worker* w = *sub_worker_contexts_.begin();
|
||||
remove_sub_worker_context(w);
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
'use strict';
|
||||
const common = require('../common');
|
||||
const { Worker } = require('worker_threads');
|
||||
|
||||
// Check that a Worker that's running another Worker can be terminated.
|
||||
|
||||
const worker = new Worker(`
|
||||
const { Worker, parentPort } = require('worker_threads');
|
||||
const worker = new Worker('setInterval(() => {}, 10);', { eval: true });
|
||||
worker.on('online', () => {
|
||||
parentPort.postMessage({});
|
||||
});
|
||||
`, { eval: true });
|
||||
|
||||
worker.on('message', common.mustCall(() => worker.terminate()));
|
Loading…
Reference in New Issue