Skip to content

Commit 40a1ad6

Browse files
test(telemetry): flush metrics with heartbeats if the interval is small (#1418)
# Motivation Tests usually set the telemetry hearbeat interval to a small value to not have to wait to get data. For these tests also want to get telemetry metrics fast. This PR changes the metics flush interval to the heartbeat value if the hearbeat interval is set to a shorter duration than the default metrics flush interval.
1 parent 033991d commit 40a1ad6

1 file changed

Lines changed: 10 additions & 7 deletions

File tree

  • libdd-telemetry/src/worker

libdd-telemetry/src/worker/mod.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use crate::{
1313
use libdd_common::Endpoint;
1414
use libdd_common::{hyper_migration, tag::Tag, worker::Worker};
1515

16-
use std::fmt::Debug;
1716
use std::iter::Sum;
1817
use std::ops::Add;
1918
use std::{
@@ -26,6 +25,7 @@ use std::{
2625
},
2726
time,
2827
};
28+
use std::{fmt::Debug, time::Duration};
2929

3030
use crate::metrics::MetricBucketStats;
3131
use futures::{
@@ -135,6 +135,7 @@ pub struct TelemetryWorker {
135135
seq_id: AtomicU64,
136136
runtime_id: String,
137137
client: Box<dyn http_client::HttpClient + Sync + Send>,
138+
metrics_flush_interval: Duration,
138139
deadlines: scheduler::Scheduler<LifecycleAction>,
139140
data: TelemetryWorkerData,
140141
}
@@ -147,6 +148,7 @@ impl Debug for TelemetryWorker {
147148
.field("cancellation_token", &self.cancellation_token)
148149
.field("seq_id", &self.seq_id)
149150
.field("runtime_id", &self.runtime_id)
151+
.field("metrics_flush_interval", &self.metrics_flush_interval)
150152
.field("deadlines", &self.deadlines)
151153
.field("data", &self.data)
152154
.finish()
@@ -595,7 +597,7 @@ impl TelemetryWorker {
595597
},
596598
common: context.common,
597599
_type: context.metric_type,
598-
interval: MetricBuckets::METRICS_FLUSH_INTERVAL.as_secs(),
600+
interval: self.metrics_flush_interval.as_secs(),
599601
});
600602
}
601603
data::Distributions { series }
@@ -619,7 +621,7 @@ impl TelemetryWorker {
619621
points,
620622
common: context.common,
621623
_type: context.metric_type,
622-
interval: MetricBuckets::METRICS_FLUSH_INTERVAL.as_secs(),
624+
interval: self.metrics_flush_interval.as_secs(),
623625
});
624626
}
625627

@@ -1087,6 +1089,9 @@ impl TelemetryWorkerBuilder {
10871089
let telemetry_heartbeat_interval = config.telemetry_heartbeat_interval;
10881090
let client = http_client::from_config(&config);
10891091

1092+
let metrics_flush_interval =
1093+
telemetry_heartbeat_interval.min(MetricBuckets::METRICS_FLUSH_INTERVAL);
1094+
10901095
#[allow(clippy::unwrap_used)]
10911096
let worker = TelemetryWorker {
10921097
flavor: self.flavor,
@@ -1108,11 +1113,9 @@ impl TelemetryWorkerBuilder {
11081113
.runtime_id
11091114
.unwrap_or_else(|| uuid::Uuid::new_v4().to_string()),
11101115
client,
1116+
metrics_flush_interval,
11111117
deadlines: scheduler::Scheduler::new(vec![
1112-
(
1113-
MetricBuckets::METRICS_FLUSH_INTERVAL,
1114-
LifecycleAction::FlushMetricAggr,
1115-
),
1118+
(metrics_flush_interval, LifecycleAction::FlushMetricAggr),
11161119
(telemetry_heartbeat_interval, LifecycleAction::FlushData),
11171120
(
11181121
time::Duration::from_secs(60 * 60 * 24),

0 commit comments

Comments
 (0)