Skip to content

Commit c673130

Browse files

File tree

4 files changed

+6
-87
lines changed

4 files changed

+6
-87
lines changed

bottlecap/Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bottlecap/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ datadog-trace-utils = { git = "https://github.com/DataDog/libdatadog", rev = "ba
6363
datadog-trace-normalization = { git = "https://github.com/DataDog/libdatadog", rev = "ba8955394cf35cf24a1a508fbe6264ad84702567" }
6464
datadog-trace-obfuscation = { git = "https://github.com/DataDog/libdatadog", rev = "ba8955394cf35cf24a1a508fbe6264ad84702567" }
6565
datadog-trace-stats = { git = "https://github.com/DataDog/libdatadog", rev = "ba8955394cf35cf24a1a508fbe6264ad84702567" }
66-
dogstatsd = { git = "https://github.com/DataDog/serverless-components", rev = "aa7961984f221ec3f1048ebf3379c4b94a33be0e", default-features = false }
67-
datadog-fips = { git = "https://github.com/DataDog/serverless-components", rev = "aa7961984f221ec3f1048ebf3379c4b94a33be0e", default-features = false }
66+
dogstatsd = { git = "https://github.com/DataDog/serverless-components", rev = "502f005c56b8d51dee95424a9c1404df46e2aae4", default-features = false }
67+
datadog-fips = { git = "https://github.com/DataDog/serverless-components", rev = "502f005c56b8d51dee95424a9c1404df46e2aae4", default-features = false }
6868
libddwaf = { version = "1.28.1", git = "https://github.com/DataDog/libddwaf-rust", rev = "d1534a158d976bd4f747bf9fcc58e0712d2d17fc", default-features = false, features = ["serde"] }
6969

7070
[dev-dependencies]

bottlecap/src/config/env.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use std::collections::HashMap;
44
use std::time::Duration;
55

66
use datadog_trace_obfuscation::replacer::ReplaceRule;
7+
use dogstatsd::util::parse_metric_namespace;
78

89
use crate::{
910
config::{
@@ -527,7 +528,7 @@ fn merge_config(config: &mut Config, env_config: &EnvConfig) {
527528
merge_option_to_value!(config, env_config, metrics_config_compression_level);
528529

529530
if let Some(namespace) = &env_config.statsd_metric_namespace {
530-
config.statsd_metric_namespace = super::validate_metric_namespace(namespace);
531+
config.statsd_metric_namespace = parse_metric_namespace(namespace);
531532
}
532533

533534
// OTLP

bottlecap/src/config/mod.rs

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -701,39 +701,6 @@ where
701701
}
702702
}
703703

704-
fn validate_metric_namespace(namespace: &str) -> Option<String> {
705-
let trimmed = namespace.trim();
706-
if trimmed.is_empty() {
707-
return None;
708-
}
709-
710-
let mut chars = trimmed.chars();
711-
712-
if let Some(first_char) = chars.next() {
713-
if !first_char.is_ascii_alphabetic() {
714-
error!(
715-
"DD_STATSD_METRIC_NAMESPACE must start with a letter, got: '{}'. Ignoring namespace.",
716-
trimmed
717-
);
718-
return None;
719-
}
720-
} else {
721-
return None;
722-
}
723-
724-
if let Some(invalid_char) =
725-
chars.find(|&ch| !ch.is_ascii_alphanumeric() && ch != '_' && ch != '.')
726-
{
727-
error!(
728-
"DD_STATSD_METRIC_NAMESPACE contains invalid character '{}' in '{}'. Only ASCII alphanumerics, underscores, and periods are allowed. Ignoring namespace.",
729-
invalid_char, trimmed
730-
);
731-
return None;
732-
}
733-
734-
Some(trimmed.to_string())
735-
}
736-
737704
pub fn deserialize_option_lossless<'de, D, T>(deserializer: D) -> Result<Option<T>, D::Error>
738705
where
739706
D: Deserializer<'de>,
@@ -1511,53 +1478,4 @@ pub mod tests {
15111478
expected.insert("valid".to_string(), "tag".to_string());
15121479
assert_eq!(result.tags, expected);
15131480
}
1514-
1515-
#[test]
1516-
fn test_validate_metric_namespace_valid() {
1517-
assert_eq!(
1518-
validate_metric_namespace("myapp"),
1519-
Some("myapp".to_string())
1520-
);
1521-
assert_eq!(
1522-
validate_metric_namespace("my_app"),
1523-
Some("my_app".to_string())
1524-
);
1525-
assert_eq!(
1526-
validate_metric_namespace("my.app"),
1527-
Some("my.app".to_string())
1528-
);
1529-
assert_eq!(
1530-
validate_metric_namespace("MyApp123"),
1531-
Some("MyApp123".to_string())
1532-
);
1533-
assert_eq!(
1534-
validate_metric_namespace(" myapp "),
1535-
Some("myapp".to_string())
1536-
);
1537-
}
1538-
1539-
#[test]
1540-
fn test_validate_metric_namespace_empty() {
1541-
assert_eq!(validate_metric_namespace(""), None);
1542-
assert_eq!(validate_metric_namespace(" "), None);
1543-
assert_eq!(validate_metric_namespace("\t\n"), None);
1544-
}
1545-
1546-
#[test]
1547-
fn test_validate_metric_namespace_invalid_first_char() {
1548-
assert_eq!(validate_metric_namespace("1myapp"), None);
1549-
assert_eq!(validate_metric_namespace("_myapp"), None);
1550-
assert_eq!(validate_metric_namespace(".myapp"), None);
1551-
assert_eq!(validate_metric_namespace("-myapp"), None);
1552-
}
1553-
1554-
#[test]
1555-
fn test_validate_metric_namespace_invalid_chars() {
1556-
assert_eq!(validate_metric_namespace("my-app"), None);
1557-
assert_eq!(validate_metric_namespace("my app"), None);
1558-
assert_eq!(validate_metric_namespace("my@app"), None);
1559-
assert_eq!(validate_metric_namespace("my#app"), None);
1560-
assert_eq!(validate_metric_namespace("my$app"), None);
1561-
assert_eq!(validate_metric_namespace("my!app"), None);
1562-
}
15631481
}

0 commit comments

Comments
 (0)