diff options
author | Ali Ijaz Sheikh <ofrobots@google.com> | 2018-10-11 06:33:25 -0700 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2018-10-12 14:12:31 -0700 |
commit | f5986a464316e2c7c2a21f5a5e9ffa7e527fd9d4 (patch) | |
tree | 469a2299ba6eb95cf2a27d9dcce886da09479f37 /src/tracing/agent.cc | |
parent | b4e979ff84bbd366218ddba73ce7f275415b3569 (diff) | |
download | android-node-v8-f5986a464316e2c7c2a21f5a5e9ffa7e527fd9d4.tar.gz android-node-v8-f5986a464316e2c7c2a21f5a5e9ffa7e527fd9d4.tar.bz2 android-node-v8-f5986a464316e2c7c2a21f5a5e9ffa7e527fd9d4.zip |
src: trace_event: secondary storage for metadata
Metadata trace-events should be held in secondary storage so that they
can be periodically reemitted. This change establishes the secondary
storage and ensures that events are reemitted on each flush.
PR-URL: https://github.com/nodejs/node/pull/20900
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'src/tracing/agent.cc')
-rw-r--r-- | src/tracing/agent.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/tracing/agent.cc b/src/tracing/agent.cc index fd5cb3387b..103df55da5 100644 --- a/src/tracing/agent.cc +++ b/src/tracing/agent.cc @@ -1,6 +1,7 @@ #include "tracing/agent.h" #include <string> +#include "trace_event.h" #include "tracing/node_trace_buffer.h" #include "debug_utils.h" #include "env-inl.h" @@ -207,9 +208,35 @@ void Agent::AppendTraceEvent(TraceObject* trace_event) { } void Agent::Flush(bool blocking) { + for (const auto& event : metadata_events_) + AppendTraceEvent(event.get()); + for (const auto& id_writer : writers_) id_writer.second->Flush(blocking); } +void TracingController::AddMetadataEvent( + const unsigned char* category_group_enabled, + const char* name, + int num_args, + const char** arg_names, + const unsigned char* arg_types, + const uint64_t* arg_values, + std::unique_ptr<v8::ConvertableToTraceFormat>* convertable_values, + unsigned int flags) { + std::unique_ptr<TraceObject> trace_event(new TraceObject); + trace_event->Initialize( + TRACE_EVENT_PHASE_METADATA, category_group_enabled, name, + node::tracing::kGlobalScope, // scope + node::tracing::kNoId, // id + node::tracing::kNoId, // bind_id + num_args, arg_names, arg_types, arg_values, convertable_values, + TRACE_EVENT_FLAG_NONE, + CurrentTimestampMicroseconds(), + CurrentCpuTimestampMicroseconds()); + node::tracing::TraceEventHelper::GetAgent()->AddMetadataEvent( + std::move(trace_event)); +} + } // namespace tracing } // namespace node |