Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-09-18 13:29:40 +0300
committerMichaël Zasso <targos@protonmail.com>2018-09-25 09:53:37 +0300
commitb5889d0b842955878f535847aea401e4e0b8fd15 (patch)
tree99476b5f055302ab61a53bbcdbceff57b170ee69 /src/node_worker.cc
parent1c3a2ebfcf0a5b3d7c7424619ea31ef0fdcca03a (diff)
worker: only stop inspector if started
This may fix some flakiness with tests that use `worker.terminate()`. In particular, the following failure seems like it could be related (no consistent reproduction available, though): ``` 15:30:14 not ok 187 parallel/test-heapdump-worker 15:30:14 --- 15:30:14 duration_ms: 2.499 15:30:14 severity: fail 15:30:14 exitcode: 134 15:30:14 stack: |- 15:30:14 npm[6904]: src\inspector_agent.cc:729: Assertion `(client_) != nullptr' failed. ``` From https://ci.nodejs.org/job/node-test-binary-windows/20041/COMPILED_BY=vs2017,RUNNER=win2016,RUN_SUBSET=2/console Refs: https://github.com/nodejs/node/pull/22769 PR-URL: https://github.com/nodejs/node/pull/22927 Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Eugene Ostroukhov <eostroukhov@google.com>
Diffstat (limited to 'src/node_worker.cc')
-rw-r--r--src/node_worker.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/node_worker.cc b/src/node_worker.cc
index ba4ad9ccf70..ba209c056a1 100644
--- a/src/node_worker.cc
+++ b/src/node_worker.cc
@@ -136,6 +136,7 @@ void Worker::Run() {
TRACE_STR_COPY(name.c_str()));
MultiIsolatePlatform* platform = isolate_data_->platform();
CHECK_NE(platform, nullptr);
+ bool inspector_started = false;
Debug(this, "Starting worker with id %llu", thread_id_);
{
@@ -163,6 +164,9 @@ void Worker::Run() {
}
if (!is_stopped()) {
+ StartWorkerInspector(env_.get(), url_);
+ inspector_started = true;
+
HandleScope handle_scope(isolate_);
Environment::AsyncCallbackScope callback_scope(env_.get());
env_->async_hooks()->push_async_ids(1, 0);
@@ -171,7 +175,6 @@ void Worker::Run() {
env_->async_hooks()->pop_async_id(1);
Debug(this, "Loaded environment for worker %llu", thread_id_);
- StartWorkerInspector(env_.get(), url_);
}
{
@@ -232,7 +235,8 @@ void Worker::Run() {
env_->stop_sub_worker_contexts();
env_->RunCleanup();
RunAtExit(env_.get());
- WaitForWorkerInspectorToStop(env_.get());
+ if (inspector_started)
+ WaitForWorkerInspectorToStop(env_.get());
{
Mutex::ScopedLock stopped_lock(stopped_mutex_);