summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-08-04 09:48:50 -0700
committerJames M Snell <jasnell@gmail.com>2018-08-10 07:43:23 -0700
commitc85933cbd07ec3e32fdb27c4c4ef1aeadc609345 (patch)
tree84a5b5137bb9c5320357d59c012a977d2d82d1dd
parent88bff82624628df261a429386d81565023062e44 (diff)
downloadnode-new-c85933cbd07ec3e32fdb27c4c4ef1aeadc609345.tar.gz
trace_events,async_hooks: use intrinsic trace
Switch to using the intrinsic trace event method for async_hooks. This is a breaking change because of the switch to a nested data argument for exec id and trigger id values. PR-URL: https://github.com/nodejs/node/pull/22127 Reviewed-By: Andreas Madsen <amwebdk@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
-rw-r--r--lib/internal/trace_events_async_hooks.js20
-rw-r--r--src/async_wrap.cc20
-rw-r--r--test/parallel/test-trace-events-async-hooks.js4
3 files changed, 25 insertions, 19 deletions
diff --git a/lib/internal/trace_events_async_hooks.js b/lib/internal/trace_events_async_hooks.js
index 011dc6bbea..f687f1ced8 100644
--- a/lib/internal/trace_events_async_hooks.js
+++ b/lib/internal/trace_events_async_hooks.js
@@ -1,6 +1,7 @@
'use strict';
exports.setup = function(traceEvents, traceEventCategory) {
+ const { trace } = traceEvents;
const async_wrap = process.binding('async_wrap');
const async_hooks = require('async_hooks');
@@ -27,34 +28,33 @@ exports.setup = function(traceEvents, traceEventCategory) {
if (nativeProviders.has(type)) return;
typeMemory.set(asyncId, type);
- traceEvents.emit(BEFORE_EVENT, traceEventCategory,
- type, asyncId,
- 'triggerAsyncId', triggerAsyncId,
- 'executionAsyncId', async_hooks.executionAsyncId());
+ trace(BEFORE_EVENT, traceEventCategory,
+ type, asyncId,
+ {
+ triggerAsyncId,
+ executionAsyncId: async_hooks.executionAsyncId()
+ });
},
before(asyncId) {
const type = typeMemory.get(asyncId);
if (type === undefined) return;
- traceEvents.emit(BEFORE_EVENT, traceEventCategory,
- type + '_CALLBACK', asyncId);
+ trace(BEFORE_EVENT, traceEventCategory, `${type}_CALLBACK`, asyncId);
},
after(asyncId) {
const type = typeMemory.get(asyncId);
if (type === undefined) return;
- traceEvents.emit(END_EVENT, traceEventCategory,
- type + '_CALLBACK', asyncId);
+ trace(END_EVENT, traceEventCategory, `${type}_CALLBACK`, asyncId);
},
destroy(asyncId) {
const type = typeMemory.get(asyncId);
if (type === undefined) return;
- traceEvents.emit(END_EVENT, traceEventCategory,
- type, asyncId);
+ trace(END_EVENT, traceEventCategory, type, asyncId);
// cleanup asyncId to type map
typeMemory.delete(asyncId);
diff --git a/src/async_wrap.cc b/src/async_wrap.cc
index 7f2a0ece2f..51072bb8c9 100644
--- a/src/async_wrap.cc
+++ b/src/async_wrap.cc
@@ -23,6 +23,7 @@
#include "env-inl.h"
#include "node_internals.h"
#include "util-inl.h"
+#include "tracing/traced_value.h"
#include "v8.h"
#include "v8-profiler.h"
@@ -608,13 +609,18 @@ void AsyncWrap::AsyncReset(double execution_async_id, bool silent) {
switch (provider_type()) {
#define V(PROVIDER) \
case PROVIDER_ ## PROVIDER: \
- TRACE_EVENT_NESTABLE_ASYNC_BEGIN2( \
- TRACING_CATEGORY_NODE1(async_hooks), \
- #PROVIDER, static_cast<int64_t>(get_async_id()), \
- "executionAsyncId", \
- static_cast<int64_t>(env()->execution_async_id()), \
- "triggerAsyncId", \
- static_cast<int64_t>(get_trigger_async_id())); \
+ if (*TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED( \
+ TRACING_CATEGORY_NODE1(async_hooks))) { \
+ auto data = tracing::TracedValue::Create(); \
+ data->SetInteger("executionAsyncId", \
+ static_cast<int64_t>(env()->execution_async_id())); \
+ data->SetInteger("triggerAsyncId", \
+ static_cast<int64_t>(get_trigger_async_id())); \
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( \
+ TRACING_CATEGORY_NODE1(async_hooks), \
+ #PROVIDER, static_cast<int64_t>(get_async_id()), \
+ "data", std::move(data)); \
+ } \
break;
NODE_ASYNC_PROVIDER_TYPES(V)
#undef V
diff --git a/test/parallel/test-trace-events-async-hooks.js b/test/parallel/test-trace-events-async-hooks.js
index 13cd523de7..7c82eb9364 100644
--- a/test/parallel/test-trace-events-async-hooks.js
+++ b/test/parallel/test-trace-events-async-hooks.js
@@ -61,8 +61,8 @@ proc.once('exit', common.mustCall(() => {
return (trace.ph === 'b' && !trace.name.includes('_CALLBACK'));
});
assert.ok(initEvents.every((trace) => {
- return (trace.args.executionAsyncId > 0 &&
- trace.args.triggerAsyncId > 0);
+ return (trace.args.data.executionAsyncId > 0 &&
+ trace.args.data.triggerAsyncId > 0);
}), `Unexpected initEvents format: ${util.inspect(initEvents)}`);
}));
}));