From 4e23ffcf34510a422c1ece651e486ade0713615e Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 10 Apr 2024 14:54:54 -0400 Subject: [PATCH 1/6] Extract trace context status --- .../src/normalize/span/tag_extraction.rs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/relay-event-normalization/src/normalize/span/tag_extraction.rs b/relay-event-normalization/src/normalize/span/tag_extraction.rs index c03aab8423..37d4e08c01 100644 --- a/relay-event-normalization/src/normalize/span/tag_extraction.rs +++ b/relay-event-normalization/src/normalize/span/tag_extraction.rs @@ -228,6 +228,10 @@ fn extract_shared_tags(event: &Event) -> BTreeMap { if let Some(op) = extract_transaction_op(trace_context) { tags.insert(SpanTagKey::TransactionOp, op.to_lowercase().to_owned()); } + + if let Some(status) = trace_context.status.value() { + tags.insert(SpanTagKey::StatusCode, status.to_string()); + } } if MOBILE_SDKS.contains(&event.sdk_name()) { @@ -1635,6 +1639,30 @@ LIMIT 1 ); } + #[test] + fn test_extract_status() { + let json = r#" + { + "span_id": "bd429c44b67a3eb1", + "start_timestamp": 1597976300.0000000, + "timestamp": 1597976302.0000000, + "trace_id": "ff62a8b040f340bda5d830223def1d81", + "contexts": { + "trace": { + "status": "ok", + }, + }, + } + "#; + let span = Annotated::::from_json(json) + .unwrap() + .into_value() + .unwrap(); + let tags = extract_tags(&span, 200, None, None, false, None); + + assert_eq!(tags.get(&SpanTagKey::StatusCode), Some(&"ok".to_string())); + } + fn extract_tags_supabase(description: impl Into) -> BTreeMap { let json = r#"{ "description": "from(my_table)", From c36cee1434e3a1be657498a8bf8202bd47f24694 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 10 Apr 2024 15:33:47 -0400 Subject: [PATCH 2/6] fix comma --- relay-event-normalization/src/normalize/span/tag_extraction.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relay-event-normalization/src/normalize/span/tag_extraction.rs b/relay-event-normalization/src/normalize/span/tag_extraction.rs index 37d4e08c01..e221ff87ce 100644 --- a/relay-event-normalization/src/normalize/span/tag_extraction.rs +++ b/relay-event-normalization/src/normalize/span/tag_extraction.rs @@ -1651,7 +1651,7 @@ LIMIT 1 "trace": { "status": "ok", }, - }, + } } "#; let span = Annotated::::from_json(json) From e7b1de345547fcff4bd39fba0427e5be00718716 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 10 Apr 2024 16:02:35 -0400 Subject: [PATCH 3/6] fix test and tag key --- .../src/normalize/span/tag_extraction.rs | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/relay-event-normalization/src/normalize/span/tag_extraction.rs b/relay-event-normalization/src/normalize/span/tag_extraction.rs index e221ff87ce..b4c4b2f47c 100644 --- a/relay-event-normalization/src/normalize/span/tag_extraction.rs +++ b/relay-event-normalization/src/normalize/span/tag_extraction.rs @@ -67,6 +67,7 @@ pub enum SpanTagKey { AppStartType, ReplayId, CacheHit, + TraceStatus, } impl SpanTagKey { @@ -109,6 +110,7 @@ impl SpanTagKey { SpanTagKey::OsName => "os.name", SpanTagKey::AppStartType => "app_start_type", SpanTagKey::ReplayId => "replay_id", + SpanTagKey::TraceStatus => "trace.status", } } } @@ -230,7 +232,7 @@ fn extract_shared_tags(event: &Event) -> BTreeMap { } if let Some(status) = trace_context.status.value() { - tags.insert(SpanTagKey::StatusCode, status.to_string()); + tags.insert(SpanTagKey::TraceStatus, status.to_string()); } } @@ -1640,27 +1642,46 @@ LIMIT 1 } #[test] - fn test_extract_status() { + fn test_extract_trace_status() { let json = r#" + { - "span_id": "bd429c44b67a3eb1", - "start_timestamp": 1597976300.0000000, - "timestamp": 1597976302.0000000, - "trace_id": "ff62a8b040f340bda5d830223def1d81", + "type": "transaction", + "platform": "python", + "start_timestamp": "2021-04-26T07:59:01+0100", + "timestamp": "2021-04-26T08:00:00+0100", + "transaction": "foo", "contexts": { "trace": { - "status": "ok", - }, - } + "status": "ok" + } + }, + "spans": [ + { + "op": "resource.script", + "span_id": "bd429c44b67a3eb1", + "start_timestamp": 1597976300.0000000, + "timestamp": 1597976302.0000000, + "trace_id": "ff62a8b040f340bda5d830223def1d81" + } + ] } "#; - let span = Annotated::::from_json(json) + + let mut event = Annotated::::from_json(json) .unwrap() .into_value() .unwrap(); - let tags = extract_tags(&span, 200, None, None, false, None); - assert_eq!(tags.get(&SpanTagKey::StatusCode), Some(&"ok".to_string())); + extract_span_tags_from_event(&mut event, 200); + + let span = &event.spans.value().unwrap()[0]; + let tags = span.value().unwrap().sentry_tags.value().unwrap(); + + assert_eq!( + tags.get("trace.status"), + Some(&Annotated::new("ok".to_string())) + ); } fn extract_tags_supabase(description: impl Into) -> BTreeMap { From fd126a40539f21134ab73c39e29ef3319f2e2314 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 10 Apr 2024 16:16:25 -0400 Subject: [PATCH 4/6] snapshots --- ...action__event__tests__extract_span_metrics_mobile.snap | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__extract_span_metrics_mobile.snap b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__extract_span_metrics_mobile.snap index 2b5323c28e..812306e53b 100644 --- a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__extract_span_metrics_mobile.snap +++ b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__extract_span_metrics_mobile.snap @@ -39,6 +39,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -84,6 +85,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -132,6 +134,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -177,6 +180,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -224,6 +228,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -271,6 +276,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -352,6 +358,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", @@ -431,6 +438,7 @@ expression: "(&event.value().unwrap().spans, metrics)" "release": "1.2.3", "sdk.name": "sentry.javascript.react-native", "sdk.version": "unknown", + "trace.status": "unknown", "transaction": "gEt /api/:version/users/", "transaction.method": "GET", "ttid": "ttid", From 11fbb779a951ffc39550372ce61c21fc54f6ff31 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 10 Apr 2024 17:24:53 -0400 Subject: [PATCH 5/6] integration test --- tests/integration/test_spans.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/integration/test_spans.py b/tests/integration/test_spans.py index 140f3ea314..dfefd7742e 100644 --- a/tests/integration/test_spans.py +++ b/tests/integration/test_spans.py @@ -777,6 +777,7 @@ def test_span_extraction_with_metrics_summary( "platform": "other", "sdk.name": "raven-node", "sdk.version": "2.6.3", + "trace.status": "unknown", "transaction": "hi", "transaction.op": "hi", }, From 7c435289a646c8e3908f24d5d6049f26c387bfb0 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 11 Apr 2024 11:46:12 -0400 Subject: [PATCH 6/6] fix more integration test --- tests/integration/test_spans.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/integration/test_spans.py b/tests/integration/test_spans.py index dfefd7742e..51c7d1499f 100644 --- a/tests/integration/test_spans.py +++ b/tests/integration/test_spans.py @@ -104,6 +104,7 @@ def test_span_extraction( "platform": "other", "sdk.name": "raven-node", "sdk.version": "2.6.3", + "trace.status": "unknown", "transaction": "hi", "transaction.op": "hi", }, @@ -133,6 +134,7 @@ def test_span_extraction( "platform": "other", "sdk.name": "raven-node", "sdk.version": "2.6.3", + "trace.status": "unknown", "transaction": "hi", "transaction.op": "hi", }, @@ -897,6 +899,7 @@ def test_span_extraction_with_ddm_missing_values( "platform": "other", "sdk.name": "raven-node", "sdk.version": "2.6.3", + "trace.status": "unknown", "transaction": "hi", "transaction.op": "hi", },