diff --git a/crates/crashtracker/src/lib.rs b/crates/crashtracker/src/lib.rs index 6dc9778..e6a9324 100644 --- a/crates/crashtracker/src/lib.rs +++ b/crates/crashtracker/src/lib.rs @@ -29,3 +29,17 @@ pub fn update_metadata (env: Env, metadata: JsUnknown) -> napi::Result<()> { Ok(()) } + +#[napi] +pub fn begin_profiler_serializing (_env: Env) -> napi::Result<()> { + let _ = datadog_crashtracker::begin_op(datadog_crashtracker::OpTypes::ProfilerSerializing); + + Ok(()) +} + +#[napi] +pub fn end_profiler_serializing (_env: Env) -> napi::Result<()> { + let _ = datadog_crashtracker::end_op(datadog_crashtracker::OpTypes::ProfilerSerializing); + + Ok(()) +} diff --git a/test/crashtracker/app.js b/test/crashtracker/app.js index 65ba859..3f03102 100644 --- a/test/crashtracker/app.js +++ b/test/crashtracker/app.js @@ -38,4 +38,5 @@ crashtracker.init({ ] }) +crashtracker.beginProfilerSerializing() require('@datadog/segfaultify').segfaultify() diff --git a/test/crashtracker/index.js b/test/crashtracker/index.js index 57e7d70..e6b5642 100644 --- a/test/crashtracker/index.js +++ b/test/crashtracker/index.js @@ -45,6 +45,13 @@ app.post('/telemetry/proxy/api/v2/apmtelemetry', (req, res) => { } else { throw new Error('Could not find a stack frame for the crashing function.') } + + const tags = req.body.payload[0].tags.split(',') + if (tags.includes('profiler_serializing:1')) { + console.log('Stack trace was marked as happened during profile serialization.') + } else { + throw new Error('Stack trace was not marked as happening during profile serialization.') + } }) })