Skip to content

Commit ea75b04

Browse files
bwoebimorrisonlevi
andauthored
refactor(rc)!: make conversion from RemoteConfigProduct back and forth generally available (#2325)
In wasm we need to shuffle these around via string repr, hence simply use strum to expose this. Renaming the enum values to be more canonical. --------- Co-authored-by: Levi Morrison <levi.morrison@datadoghq.com>
1 parent 33f6862 commit ea75b04

7 files changed

Lines changed: 21 additions & 43 deletions

File tree

datadog-live-debugger/src/remote_config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::probe_defs::LiveDebuggingData;
55
use libdd_remote_config::{ParseError, RemoteConfigContent, RemoteConfigProduct};
66

77
impl RemoteConfigContent for LiveDebuggingData {
8-
const PRODUCT: RemoteConfigProduct = RemoteConfigProduct::LiveDebugger;
8+
const PRODUCT: RemoteConfigProduct = RemoteConfigProduct::LiveDebugging;
99

1010
fn parse(data: &[u8]) -> Result<Self, ParseError> {
1111
crate::parse_json::parse(&String::from_utf8_lossy(data))

datadog-sidecar/src/shm_remote_config.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ impl<N: NotifyTarget + 'static> FileStorage for ConfigFileStorage<N> {
187187
) -> anyhow::Result<Arc<StoredShmFile>> {
188188
Ok(Arc::new(StoredShmFile {
189189
handle: Mutex::new(Some(store_shm(version, &path, file)?)),
190-
limiter: if path.product == RemoteConfigProduct::LiveDebugger {
190+
limiter: if path.product == RemoteConfigProduct::LiveDebugging {
191191
Some(SHM_LIMITER.lock_or_panic().alloc())
192192
} else {
193193
None
@@ -320,9 +320,9 @@ impl<N: NotifyTarget + 'static> MultiTargetHandlers<N, Self, NativeCapabilities>
320320
let now_enabled =
321321
dynamic_instrumentation_is_enabled(writer.dynamic_instrumentation, info);
322322
if was_enabled && !now_enabled {
323-
fetcher.unforce_product(target, RemoteConfigProduct::LiveDebugger);
323+
fetcher.unforce_product(target, RemoteConfigProduct::LiveDebugging);
324324
} else if !was_enabled && now_enabled {
325-
fetcher.force_product(target, RemoteConfigProduct::LiveDebugger);
325+
fetcher.force_product(target, RemoteConfigProduct::LiveDebugging);
326326
}
327327
}
328328
}
@@ -411,7 +411,7 @@ impl<N: NotifyTarget + 'static> Drop for ShmRemoteConfigsGuard<N> {
411411
freshly_disabled = true;
412412
}
413413
if Some(false) != apm_config_dynamic_instrumentation && freshly_disabled {
414-
fetcher.unforce_product(&self.target, RemoteConfigProduct::LiveDebugger);
414+
fetcher.unforce_product(&self.target, RemoteConfigProduct::LiveDebugging);
415415
}
416416
remove
417417
};
@@ -528,7 +528,7 @@ impl<N: NotifyTarget + 'static> ShmRemoteConfigs<N> {
528528
};
529529
if freshly_enabled {
530530
self.0
531-
.force_product(&target, RemoteConfigProduct::LiveDebugger);
531+
.force_product(&target, RemoteConfigProduct::LiveDebugging);
532532
}
533533
}
534534
}
@@ -826,7 +826,7 @@ mod tests {
826826

827827
static PATH_LIVE_DEBUGGER: LazyLock<RemoteConfigPath> = LazyLock::new(|| RemoteConfigPath {
828828
source: RemoteConfigSource::Employee,
829-
product: RemoteConfigProduct::LiveDebugger,
829+
product: RemoteConfigProduct::LiveDebugging,
830830
config_id: "ld-1".to_string(),
831831
name: "config".to_string(),
832832
});
@@ -1116,7 +1116,7 @@ mod tests {
11161116
assert_eq!(value.config_id, PATH_LIVE_DEBUGGER.config_id);
11171117
assert_eq!(
11181118
value.product,
1119-
RemoteConfigProduct::LiveDebugger,
1119+
RemoteConfigProduct::LiveDebugging,
11201120
"must be parsed as LiveDebugger, not skipped"
11211121
);
11221122
let data = value.data.as_ref().expect("LiveDebugger must parse");

libdd-ffe/src/telemetry/flagevaluation.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1536,6 +1536,7 @@ mod tests {
15361536
assert!(coalescer.finish_flush_cycle());
15371537
}
15381538

1539+
#[cfg_attr(miri, ignore)] // large cap-boundary fixture is prohibitively slow under Miri
15391540
#[test]
15401541
fn coalescer_degrades_after_per_flag_cap() {
15411542
let coalescer = FlagEvaluationEvpCoalescer::<String>::default();

libdd-remote-config/src/fetch/test_server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ impl RemoteConfigServer {
229229
},
230230
products: vec![
231231
RemoteConfigProduct::ApmTracing,
232-
RemoteConfigProduct::LiveDebugger,
232+
RemoteConfigProduct::LiveDebugging,
233233
],
234234
capabilities: vec![RemoteConfigCapabilities::ApmTracingCustomTags],
235235
}

libdd-remote-config/src/path.rs

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use serde::{Deserialize, Serialize};
55
use std::fmt::{Display, Formatter};
66
use std::hash::Hash;
7+
use std::str::FromStr;
78
use std::sync::Arc;
89

910
#[derive(Debug, Copy, Clone, Eq, Hash, PartialEq)]
@@ -24,36 +25,21 @@ pub enum RemoteConfigSource {
2425
Deserialize,
2526
strum_macros::EnumIter,
2627
strum_macros::IntoStaticStr,
28+
strum_macros::Display,
29+
strum_macros::EnumString,
2730
)]
31+
#[strum(serialize_all = "SCREAMING_SNAKE_CASE")]
2832
pub enum RemoteConfigProduct {
2933
AgentConfig,
3034
AgentTask,
3135
ApmTracing,
3236
Asm,
3337
AsmData,
34-
AsmDD,
38+
AsmDd,
3539
AsmFeatures,
3640
FfeFlags,
37-
LiveDebugger,
38-
LiveDebuggerSymbolDb,
39-
}
40-
41-
impl Display for RemoteConfigProduct {
42-
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
43-
let str = match self {
44-
RemoteConfigProduct::AgentConfig => "AGENT_CONFIG",
45-
RemoteConfigProduct::AgentTask => "AGENT_TASK",
46-
RemoteConfigProduct::ApmTracing => "APM_TRACING",
47-
RemoteConfigProduct::Asm => "ASM",
48-
RemoteConfigProduct::AsmData => "ASM_DATA",
49-
RemoteConfigProduct::AsmDD => "ASM_DD",
50-
RemoteConfigProduct::AsmFeatures => "ASM_FEATURES",
51-
RemoteConfigProduct::FfeFlags => "FFE_FLAGS",
52-
RemoteConfigProduct::LiveDebugger => "LIVE_DEBUGGING",
53-
RemoteConfigProduct::LiveDebuggerSymbolDb => "LIVE_DEBUGGING_SYMBOL_DB",
54-
};
55-
write!(f, "{str}")
56-
}
41+
LiveDebugging,
42+
LiveDebuggingSymbolDb,
5743
}
5844

5945
#[derive(Debug, Clone, Eq, Hash, PartialEq)]
@@ -91,19 +77,8 @@ impl RemoteConfigPath {
9177
}
9278
source => anyhow::bail!("Unknown source {}", source),
9379
},
94-
product: match parts[parts.len() - 3] {
95-
"AGENT_CONFIG" => RemoteConfigProduct::AgentConfig,
96-
"AGENT_TASK" => RemoteConfigProduct::AgentTask,
97-
"APM_TRACING" => RemoteConfigProduct::ApmTracing,
98-
"ASM" => RemoteConfigProduct::Asm,
99-
"ASM_DATA" => RemoteConfigProduct::AsmData,
100-
"ASM_DD" => RemoteConfigProduct::AsmDD,
101-
"ASM_FEATURES" => RemoteConfigProduct::AsmFeatures,
102-
"FFE_FLAGS" => RemoteConfigProduct::FfeFlags,
103-
"LIVE_DEBUGGING" => RemoteConfigProduct::LiveDebugger,
104-
"LIVE_DEBUGGING_SYMBOL_DB" => RemoteConfigProduct::LiveDebuggerSymbolDb,
105-
product => anyhow::bail!("Unknown product {}", product),
106-
},
80+
product: RemoteConfigProduct::from_str(parts[parts.len() - 3])
81+
.map_err(|_| anyhow::anyhow!("Unknown product {}", parts[parts.len() - 3]))?,
10782
config_id: parts[parts.len() - 2],
10883
name: parts[parts.len() - 1],
10984
})

libdd-telemetry/src/worker/metric_ring.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ mod tests {
242242
assert_eq!(sum, (0..n).map(|i| i as f64).sum::<f64>());
243243
}
244244

245+
#[cfg_attr(miri, ignore)] // very slow
245246
#[test]
246247
fn multi_producer_batch_drain_loses_nothing() {
247248
let ring = Arc::new(MetricRing::new());

libdd-trace-utils/src/trace_filter.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@ mod tests {
461461

462462
// ---- require_regex (TagRegexFilter – literal key, regex value) ----
463463

464+
#[cfg_attr(miri, ignore)] // regex compilation is prohibitively slow under Miri
464465
#[test]
465466
fn require_regex_value_match_keeps() {
466467
let mut traces = one_trace(span_with("r", &[("env", "production")]));

0 commit comments

Comments
 (0)