src: remove async_hooks destroy timer handle
PR-URL: https://github.com/nodejs/node/pull/17117 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
85f3e319c4
commit
5d7f5c16b3
@ -137,11 +137,7 @@ RetainedObjectInfo* WrapperInfo(uint16_t class_id, Local<Value> wrapper) {
|
|||||||
// end RetainedAsyncInfo
|
// end RetainedAsyncInfo
|
||||||
|
|
||||||
|
|
||||||
static void DestroyAsyncIdsCallback(uv_timer_t* handle) {
|
static void DestroyAsyncIdsCallback(Environment* env, void* data) {
|
||||||
Environment* env = Environment::from_destroy_async_ids_timer_handle(handle);
|
|
||||||
|
|
||||||
HandleScope handle_scope(env->isolate());
|
|
||||||
Context::Scope context_scope(env->context());
|
|
||||||
Local<Function> fn = env->async_hooks_destroy_function();
|
Local<Function> fn = env->async_hooks_destroy_function();
|
||||||
|
|
||||||
TryCatch try_catch(env->isolate());
|
TryCatch try_catch(env->isolate());
|
||||||
@ -689,8 +685,7 @@ void AsyncWrap::EmitDestroy(Environment* env, double async_id) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (env->destroy_async_id_list()->empty()) {
|
if (env->destroy_async_id_list()->empty()) {
|
||||||
uv_timer_start(env->destroy_async_ids_timer_handle(),
|
env->SetImmediate(DestroyAsyncIdsCallback, nullptr);
|
||||||
DestroyAsyncIdsCallback, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
env->destroy_async_id_list()->push_back(async_id);
|
env->destroy_async_id_list()->push_back(async_id);
|
||||||
|
@ -345,15 +345,6 @@ inline uv_idle_t* Environment::immediate_idle_handle() {
|
|||||||
return &immediate_idle_handle_;
|
return &immediate_idle_handle_;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Environment* Environment::from_destroy_async_ids_timer_handle(
|
|
||||||
uv_timer_t* handle) {
|
|
||||||
return ContainerOf(&Environment::destroy_async_ids_timer_handle_, handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline uv_timer_t* Environment::destroy_async_ids_timer_handle() {
|
|
||||||
return &destroy_async_ids_timer_handle_;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void Environment::RegisterHandleCleanup(uv_handle_t* handle,
|
inline void Environment::RegisterHandleCleanup(uv_handle_t* handle,
|
||||||
HandleCleanupCb cb,
|
HandleCleanupCb cb,
|
||||||
void *arg) {
|
void *arg) {
|
||||||
|
@ -96,8 +96,6 @@ void Environment::Start(int argc,
|
|||||||
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_prepare_handle_));
|
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_prepare_handle_));
|
||||||
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_check_handle_));
|
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_check_handle_));
|
||||||
|
|
||||||
uv_timer_init(event_loop(), destroy_async_ids_timer_handle());
|
|
||||||
|
|
||||||
auto close_and_finish = [](Environment* env, uv_handle_t* handle, void* arg) {
|
auto close_and_finish = [](Environment* env, uv_handle_t* handle, void* arg) {
|
||||||
handle->data = env;
|
handle->data = env;
|
||||||
|
|
||||||
@ -122,10 +120,6 @@ void Environment::Start(int argc,
|
|||||||
reinterpret_cast<uv_handle_t*>(&idle_check_handle_),
|
reinterpret_cast<uv_handle_t*>(&idle_check_handle_),
|
||||||
close_and_finish,
|
close_and_finish,
|
||||||
nullptr);
|
nullptr);
|
||||||
RegisterHandleCleanup(
|
|
||||||
reinterpret_cast<uv_handle_t*>(&destroy_async_ids_timer_handle_),
|
|
||||||
close_and_finish,
|
|
||||||
nullptr);
|
|
||||||
|
|
||||||
if (start_profiler_idle_notifier) {
|
if (start_profiler_idle_notifier) {
|
||||||
StartProfilerIdleNotifier();
|
StartProfilerIdleNotifier();
|
||||||
|
@ -544,11 +544,8 @@ class Environment {
|
|||||||
inline uint32_t watched_providers() const;
|
inline uint32_t watched_providers() const;
|
||||||
|
|
||||||
static inline Environment* from_immediate_check_handle(uv_check_t* handle);
|
static inline Environment* from_immediate_check_handle(uv_check_t* handle);
|
||||||
static inline Environment* from_destroy_async_ids_timer_handle(
|
|
||||||
uv_timer_t* handle);
|
|
||||||
inline uv_check_t* immediate_check_handle();
|
inline uv_check_t* immediate_check_handle();
|
||||||
inline uv_idle_t* immediate_idle_handle();
|
inline uv_idle_t* immediate_idle_handle();
|
||||||
inline uv_timer_t* destroy_async_ids_timer_handle();
|
|
||||||
|
|
||||||
// Register clean-up cb to be called on environment destruction.
|
// Register clean-up cb to be called on environment destruction.
|
||||||
inline void RegisterHandleCleanup(uv_handle_t* handle,
|
inline void RegisterHandleCleanup(uv_handle_t* handle,
|
||||||
@ -701,7 +698,6 @@ class Environment {
|
|||||||
IsolateData* const isolate_data_;
|
IsolateData* const isolate_data_;
|
||||||
uv_check_t immediate_check_handle_;
|
uv_check_t immediate_check_handle_;
|
||||||
uv_idle_t immediate_idle_handle_;
|
uv_idle_t immediate_idle_handle_;
|
||||||
uv_timer_t destroy_async_ids_timer_handle_;
|
|
||||||
uv_prepare_t idle_prepare_handle_;
|
uv_prepare_t idle_prepare_handle_;
|
||||||
uv_check_t idle_check_handle_;
|
uv_check_t idle_check_handle_;
|
||||||
|
|
||||||
|
@ -66,12 +66,14 @@ function onsigusr2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onsigusr2Again() {
|
function onsigusr2Again() {
|
||||||
checkInvocations(
|
setImmediate(() => {
|
||||||
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
|
checkInvocations(
|
||||||
'signal1: when second SIGUSR2 handler is called');
|
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
|
||||||
checkInvocations(
|
'signal1: when second SIGUSR2 handler is called');
|
||||||
signal2, { init: 1, before: 1 },
|
checkInvocations(
|
||||||
'signal2: when second SIGUSR2 handler is called');
|
signal2, { init: 1, before: 1 },
|
||||||
|
'signal2: when second SIGUSR2 handler is called');
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
process.on('exit', onexit);
|
process.on('exit', onexit);
|
||||||
|
@ -128,8 +128,10 @@ function onconnection(c) {
|
|||||||
function onserverClosed() {
|
function onserverClosed() {
|
||||||
checkInvocations(tcp1, { init: 1, before: 1, after: 1, destroy: 1 },
|
checkInvocations(tcp1, { init: 1, before: 1, after: 1, destroy: 1 },
|
||||||
'tcp1 when server is closed');
|
'tcp1 when server is closed');
|
||||||
checkInvocations(tcp2, { init: 1, before: 2, after: 2, destroy: 1 },
|
setImmediate(() => {
|
||||||
'tcp2 when server is closed');
|
checkInvocations(tcp2, { init: 1, before: 2, after: 2, destroy: 1 },
|
||||||
|
'tcp2 after server is closed');
|
||||||
|
});
|
||||||
checkInvocations(tcp3, { init: 1, before: 1, after: 1 },
|
checkInvocations(tcp3, { init: 1, before: 1, after: 1 },
|
||||||
'tcp3 synchronously when server is closed');
|
'tcp3 synchronously when server is closed');
|
||||||
tick(2, () => {
|
tick(2, () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user