GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — async_hooks: clear async_id_stack for terminations in more places · nodejs/node@dd4789b

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • src/api
    • callback.cc
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/api/callback.cc‎

Copy file name to clipboardExpand all lines: src/api/callback.cc
+10-3Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,13 @@ void InternalCallbackScope::Close() {
8484
closed_ = true;
8585

8686
if (!env_->can_call_into_js()) return;
87-
if (failed_ && !env_->is_main_thread() && env_->is_stopping()) {
88-
env_->async_hooks()->clear_async_id_stack();
89-
}
87+
auto perform_stopping_check = [&]() {
88+
if (env_->is_stopping()) {
89+
MarkAsFailed();
90+
env_->async_hooks()->clear_async_id_stack();
91+
}
92+
};
93+
perform_stopping_check();
9094

9195
if (!failed_ && async_context_.async_id != 0 && !skip_hooks_) {
9296
AsyncWrap::EmitAfter(env_, async_context_.async_id);
@@ -109,6 +113,8 @@ void InternalCallbackScope::Close() {
109113

110114
if (!tick_info->has_tick_scheduled()) {
111115
MicrotasksScope::PerformCheckpoint(env_->isolate());
116+
117+
perform_stopping_check();
112118
}
113119

114120
// Make sure the stack unwound properly. If there are nested MakeCallback's
@@ -136,6 +142,7 @@ void InternalCallbackScope::Close() {
136142
if (tick_callback->Call(env_->context(), process, 0, nullptr).IsEmpty()) {
137143
failed_ = true;
138144
}
145+
perform_stopping_check();
139146
}
140147

141148
MaybeLocal<Value> InternalMakeCallback(Environment* env,

0 commit comments

Comments
0 (0)
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.