diff --git a/src/node_report.cc b/src/node_report.cc index 2dcdfa8b139..1b5fd64726a 100644 --- a/src/node_report.cc +++ b/src/node_report.cc @@ -233,11 +233,11 @@ static void WriteNodeReport(Isolate* isolate, size_t expected_results = 0; env->ForEachWorker([&](Worker* w) { - expected_results += w->RequestInterrupt([&](Environment* env) { + expected_results += w->RequestInterrupt([&, w = w](Environment* env) { std::ostringstream os; - - GetNodeReport( - env, "Worker thread subreport", trigger, Local(), os); + std::string name = + "Worker thread subreport [" + std::string(w->name()) + "]"; + GetNodeReport(env, name.c_str(), trigger, Local(), os); Mutex::ScopedLock lock(workers_mutex); worker_infos.emplace_back(os.str()); diff --git a/src/node_worker.h b/src/node_worker.h index 9e80a764a8b..54e76e5f98b 100644 --- a/src/node_worker.h +++ b/src/node_worker.h @@ -62,6 +62,7 @@ class Worker : public AsyncWrap { bool is_stopped() const; const SnapshotData* snapshot_data() const { return snapshot_data_; } bool is_internal() const { return is_internal_; } + std::string_view name() const { return name_; } static void New(const v8::FunctionCallbackInfo& args); static void CloneParentEnvVars( diff --git a/test/report/test-report-worker.js b/test/report/test-report-worker.js index 26b28219c84..f17e3986e97 100644 --- a/test/report/test-report-worker.js +++ b/test/report/test-report-worker.js @@ -13,7 +13,7 @@ async function basic() { parentPort.once('message', () => { /* Wait for message to stop the Worker */ }); - `, { eval: true }); + `, { eval: true, name: 'hello' }); await once(w, 'online'); @@ -22,7 +22,9 @@ async function basic() { assert.strictEqual(report.workers.length, 1); helper.validateContent(report.workers[0]); assert.strictEqual(report.workers[0].header.threadId, w.threadId); - + assert.strictEqual(report.workers[0].header.event, + 'Worker thread subreport [hello]', + report.workers[0].header.event); w.postMessage({}); await once(w, 'exit');