diff --git a/relay-dynamic-config/src/defaults.rs b/relay-dynamic-config/src/defaults.rs index 2cbcfe3de4..9642b6cabc 100644 --- a/relay-dynamic-config/src/defaults.rs +++ b/relay-dynamic-config/src/defaults.rs @@ -24,7 +24,7 @@ const MOBILE_OPS: &[&str] = &[ const APP_START_ROOT_SPAN_DESCRIPTIONS: &[&str] = &["Cold Start", "Warm Start"]; /// A list of patterns found in MongoDB queries. -const MONGODB_QUERIES: &[&str] = &["*\"$*", "{*", "*({*", "*[{*"]; +const MONGODB_QUERIES: &[&str] = &["*\"$*", r"\{*", r"*(\{*", r"*\[\{*"]; /// A list of patterns for resource span ops we'd like to ingest. const RESOURCE_SPAN_OPS: &[&str] = &["resource.script", "resource.css", "resource.img"]; @@ -117,7 +117,7 @@ pub fn hardcoded_span_metrics() -> Vec<(GroupKey, Vec, Vec FromIterator for TypedPatterns { fn from_iter>(iter: T) -> Self { let mut builder = Self::builder(); for pattern in iter.into_iter() { - let _ = builder.add(pattern); + let _err = builder.add(pattern); + #[cfg(debug_assertions)] + _err.expect("all patterns should be valid patterns"); } builder.build() } @@ -248,7 +250,9 @@ impl<'de, C: PatternConfig> serde::Deserialize<'de> for TypedPatterns { while let Some(item) = seq.next_element()? { // Ignore invalid patterns as documented. - let _ = builder.add(item); + let _err = builder.add(item); + #[cfg(debug_assertions)] + _err.expect("all patterns should be valid patterns"); } Ok(builder.build()) @@ -398,7 +402,7 @@ mod tests { } #[test] - #[cfg(feature = "serde")] + #[cfg(all(feature = "serde", not(debug_assertions)))] fn test_patterns_deserialize_err() { let r: TypedPatterns = serde_json::from_str(r#"["[invalid","foobar"]"#).unwrap(); diff --git a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__both_feature_flags_enabled.snap b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__both_feature_flags_enabled.snap index 6a1fc1d22b..b7cd3c9886 100644 --- a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__both_feature_flags_enabled.snap +++ b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__both_feature_flags_enabled.snap @@ -3682,8 +3682,12 @@ expression: metrics ), tags: { "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", "span.op": "db.sql.query", + "span.system": "mongodb", "transaction": "gEt /api/:version/users/", + "transaction.method": "POST", "transaction.op": "myop", }, metadata: BucketMetadata { @@ -3694,6 +3698,32 @@ expression: metrics extracted_from_indexed: false, }, }, + Bucket { + timestamp: UnixTimestamp(1597976302), + width: 0, + name: MetricName( + "d:spans/exclusive_time_light@millisecond", + ), + value: Distribution( + [ + 2000.0, + ], + ), + tags: { + "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", + "span.op": "db.sql.query", + "span.system": "mongodb", + }, + metadata: BucketMetadata { + merges: 1, + received_at: Some( + UnixTimestamp(0), + ), + extracted_from_indexed: false, + }, + }, Bucket { timestamp: UnixTimestamp(1597976302), width: 0, @@ -3707,8 +3737,12 @@ expression: metrics ), tags: { "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", "span.op": "db.sql.query", + "span.system": "mongodb", "transaction": "gEt /api/:version/users/", + "transaction.method": "POST", "transaction.op": "myop", }, metadata: BucketMetadata { @@ -3719,6 +3753,32 @@ expression: metrics extracted_from_indexed: false, }, }, + Bucket { + timestamp: UnixTimestamp(1597976302), + width: 0, + name: MetricName( + "d:spans/duration_light@millisecond", + ), + value: Distribution( + [ + 2000.0, + ], + ), + tags: { + "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", + "span.op": "db.sql.query", + "span.system": "mongodb", + }, + metadata: BucketMetadata { + merges: 1, + received_at: Some( + UnixTimestamp(0), + ), + extracted_from_indexed: false, + }, + }, Bucket { timestamp: UnixTimestamp(1597976302), width: 0, diff --git a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__only_common.snap b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__only_common.snap index 33b71ca803..7c62de6723 100644 --- a/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__only_common.snap +++ b/relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__only_common.snap @@ -3388,8 +3388,11 @@ expression: metrics ), tags: { "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", "span.op": "db.sql.query", "transaction": "gEt /api/:version/users/", + "transaction.method": "POST", "transaction.op": "myop", }, metadata: BucketMetadata { @@ -3400,6 +3403,31 @@ expression: metrics extracted_from_indexed: false, }, }, + Bucket { + timestamp: UnixTimestamp(1597976302), + width: 0, + name: MetricName( + "d:spans/exclusive_time_light@millisecond", + ), + value: Distribution( + [ + 2000.0, + ], + ), + tags: { + "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", + "span.op": "db.sql.query", + }, + metadata: BucketMetadata { + merges: 1, + received_at: Some( + UnixTimestamp(0), + ), + extracted_from_indexed: false, + }, + }, Bucket { timestamp: UnixTimestamp(1597976302), width: 0, @@ -3413,8 +3441,11 @@ expression: metrics ), tags: { "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", "span.op": "db.sql.query", "transaction": "gEt /api/:version/users/", + "transaction.method": "POST", "transaction.op": "myop", }, metadata: BucketMetadata { @@ -3425,6 +3456,31 @@ expression: metrics extracted_from_indexed: false, }, }, + Bucket { + timestamp: UnixTimestamp(1597976302), + width: 0, + name: MetricName( + "d:spans/duration_light@millisecond", + ), + value: Distribution( + [ + 2000.0, + ], + ), + tags: { + "environment": "fake_environment", + "span.action": "COUNT", + "span.category": "db", + "span.op": "db.sql.query", + }, + metadata: BucketMetadata { + merges: 1, + received_at: Some( + UnixTimestamp(0), + ), + extracted_from_indexed: false, + }, + }, Bucket { timestamp: UnixTimestamp(1597976302), width: 0,