Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
src: remove async_hooks destroy timer handle
PR-URL: #17117
  • Loading branch information
addaleax committed Jan 10, 2018
commit 9fede65c281b2e3f668bdb3d64e6b70e2678a1f9
9 changes: 2 additions & 7 deletions src/async-wrap.cc
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,7 @@ RetainedObjectInfo* WrapperInfo(uint16_t class_id, Local<Value> wrapper) {
// end RetainedAsyncInfo


static void DestroyAsyncIdsCallback(uv_timer_t* handle) {
Environment* env = Environment::from_destroy_async_ids_timer_handle(handle);

HandleScope handle_scope(env->isolate());
Context::Scope context_scope(env->context());
static void DestroyAsyncIdsCallback(Environment* env, void* data) {
Local<Function> fn = env->async_hooks_destroy_function();

TryCatch try_catch(env->isolate());
Expand Down Expand Up @@ -173,8 +169,7 @@ static void PushBackDestroyAsyncId(Environment* env, double id) {
return;

if (env->destroy_async_id_list()->empty())
uv_timer_start(env->destroy_async_ids_timer_handle(),
DestroyAsyncIdsCallback, 0, 0);
env->SetImmediate(DestroyAsyncIdsCallback, nullptr);

env->destroy_async_id_list()->push_back(id);
}
Expand Down
9 changes: 0 additions & 9 deletions src/env-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -388,15 +388,6 @@ inline uv_idle_t* Environment::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,
HandleCleanupCb cb,
void *arg) {
Expand Down
6 changes: 0 additions & 6 deletions src/env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,6 @@ void Environment::Start(int argc,
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_prepare_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) {
handle->data = env;

Expand All @@ -68,10 +66,6 @@ void Environment::Start(int argc,
reinterpret_cast<uv_handle_t*>(&idle_check_handle_),
close_and_finish,
nullptr);
RegisterHandleCleanup(
reinterpret_cast<uv_handle_t*>(&destroy_async_ids_timer_handle_),
close_and_finish,
nullptr);

if (start_profiler_idle_notifier) {
StartProfilerIdleNotifier();
Expand Down
4 changes: 0 additions & 4 deletions src/env.h
Original file line number Diff line number Diff line change
Expand Up @@ -560,11 +560,8 @@ class Environment {
inline uint32_t watched_providers() const;

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_idle_t* immediate_idle_handle();
inline uv_timer_t* destroy_async_ids_timer_handle();

// Register clean-up cb to be called on environment destruction.
inline void RegisterHandleCleanup(uv_handle_t* handle,
Expand Down Expand Up @@ -705,7 +702,6 @@ class Environment {
IsolateData* const isolate_data_;
uv_check_t immediate_check_handle_;
uv_idle_t immediate_idle_handle_;
uv_timer_t destroy_async_ids_timer_handle_;
uv_prepare_t idle_prepare_handle_;
uv_check_t idle_check_handle_;

Expand Down
14 changes: 8 additions & 6 deletions test/async-hooks/test-signalwrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,14 @@ function onsigusr2() {
}

function onsigusr2Again() {
checkInvocations(
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
'signal1: when second SIGUSR2 handler is called');
checkInvocations(
signal2, { init: 1, before: 1 },
'signal2: when second SIGUSR2 handler is called');
setImmediate(() => {
checkInvocations(
signal1, { init: 1, before: 2, after: 2, destroy: 1 },
'signal1: when second SIGUSR2 handler is called');
checkInvocations(
signal2, { init: 1, before: 1 },
'signal2: when second SIGUSR2 handler is called');
});
}

process.on('exit', onexit);
Expand Down
6 changes: 4 additions & 2 deletions test/async-hooks/test-tcpwrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,10 @@ function onconnection(c) {
function onserverClosed() {
checkInvocations(tcp1, { init: 1, before: 1, after: 1, destroy: 1 },
'tcp1 when server is closed');
checkInvocations(tcp2, { init: 1, before: 2, after: 2, destroy: 1 },
'tcp2 when server is closed');
setImmediate(() => {
checkInvocations(tcp2, { init: 1, before: 2, after: 2, destroy: 1 },
'tcp2 when server is closed');
});
checkInvocations(tcp3, { init: 1, before: 1, after: 1 },
'tcp3 synchronously when server is closed');
tick(2, () => {
Expand Down