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>
This commit is contained in:
parent
a7b59d6204
commit
e6d0ced7bb
@ -150,6 +150,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_);
|
||||
{
|
||||
@ -177,6 +178,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);
|
||||
@ -185,7 +189,6 @@ void Worker::Run() {
|
||||
env_->async_hooks()->pop_async_id(1);
|
||||
|
||||
Debug(this, "Loaded environment for worker %llu", thread_id_);
|
||||
StartWorkerInspector(env_.get(), url_);
|
||||
}
|
||||
|
||||
{
|
||||
@ -246,7 +249,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_);
|
||||
|
Loading…
x
Reference in New Issue
Block a user