Skip to content

Commit 7d4943b

Browse files
committed
fix(metrics): disable V3 shadow sampling for V1 series
1 parent 5289ef3 commit 7d4943b

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

  • lib/saluki-components/src/encoders/datadog/metrics

lib/saluki-components/src/encoders/datadog/metrics/mod.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,14 @@ const fn default_use_v2_api_series() -> bool {
102102
true
103103
}
104104

105+
fn series_shadow_config_for_endpoint(series_endpoint: MetricsEndpoint, sample_rate: f64) -> SeriesShadowConfig {
106+
SeriesShadowConfig::new(if series_endpoint == MetricsEndpoint::SeriesV2 {
107+
sample_rate
108+
} else {
109+
0.0
110+
})
111+
}
112+
105113
/// Encoding mode for a metrics endpoint.
106114
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
107115
enum MetricsEncoderMode {
@@ -324,20 +332,20 @@ impl EncoderBuilder for DatadogMetricsConfiguration {
324332
MetricsEncoderMode::from_config(self.v3_api.use_v3_series(), self.v3_api.use_v3_series_validate());
325333
let sketches_mode =
326334
MetricsEncoderMode::from_config(self.v3_api.use_v3_sketches(), self.v3_api.use_v3_sketches_validate());
327-
let series_shadow_config = SeriesShadowConfig::new(self.v3_api.series.shadow_sample_rate);
335+
let series_endpoint = if self.use_v2_api_series {
336+
MetricsEndpoint::SeriesV2
337+
} else {
338+
MetricsEndpoint::SeriesV1
339+
};
340+
let series_shadow_config =
341+
series_shadow_config_for_endpoint(series_endpoint, self.v3_api.series.shadow_sample_rate);
328342
let v3_runtime_config = V3RuntimeConfig {
329343
endpoint_config,
330344
payload_limits,
331345
series_endpoint_uri,
332346
shadow_series_endpoint_uri,
333347
series_shadow_config,
334348
};
335-
336-
let series_endpoint = if self.use_v2_api_series {
337-
MetricsEndpoint::SeriesV2
338-
} else {
339-
MetricsEndpoint::SeriesV1
340-
};
341349
let generic_payload_limits = clamp_payload_limits(
342350
self.max_uncompressed_payload_size,
343351
self.max_payload_size,
@@ -1507,6 +1515,12 @@ serializer_experimental_use_v3_api:
15071515
assert!(!shadow_sample_matches(0.5, 0.6));
15081516
}
15091517

1518+
#[test]
1519+
fn shadow_sampling_is_disabled_for_v1_series_baseline() {
1520+
assert!(series_shadow_config_for_endpoint(MetricsEndpoint::SeriesV2, 1.0).is_enabled());
1521+
assert!(!series_shadow_config_for_endpoint(MetricsEndpoint::SeriesV1, 1.0).is_enabled());
1522+
}
1523+
15101524
#[tokio::test]
15111525
async fn create_v3_request_uses_configured_endpoint_uri() {
15121526
let request = create_v3_request(

0 commit comments

Comments
 (0)