fix(observability): refresh metric timestamps on each loop iteration

Move clock initialization inside processing loops to ensure exported metrics reflect the current time rather than a stale timestamp.
This commit is contained in:
Nils Andreas Svee committed 2026-04-13 16:32:30 +07:00
1 parent dd8735f46e
commit 530a715bdf
3 files changed
+6 -8

No files matched your search

+2 -3
View File
@@ -46,10 +46,9 @@ impl Baseliner {
let slow_factor = ewma_factor(self.config.tick_interval, 135.0);
let fast_factor = ewma_factor(self.config.tick_interval, 0.4);
// We need a realtime clock when exporting metrics
let clock = Time::new(ClockId::Realtime);
loop {
// Capture current time at the start of each iteration for metric timestamps
let clock = Time::new(ClockId::Realtime);
let time_data = self.stats_rx.recv()?;
let mut owd_baseline_map = self.owd_baseline.lock_anyhow()?;
+2 -3
View File
@@ -59,10 +59,9 @@ pub trait PingListener {
) -> anyhow::Result<()> {
let socket = &mut open_socket(type_)?;
// We need a realtime clock when exporting metrics
let clock = Time::new(ClockId::Realtime);
loop {
// Capture current time at the start of each iteration for metric timestamps
let clock = Time::new(ClockId::Realtime);
let (pkt, sender) = match socket.rcv_from() {
Ok(val) => val,
Err(_) => continue,
+2 -2
View File
@@ -26,12 +26,12 @@ impl ReflectorSelector {
let mut reselection_count = 0;
let baseline_sleep_time =
Duration::from_secs_f64(self.config.tick_interval * std::f64::consts::PI);
let clock = Time::new(ClockId::Realtime);
// Initial wait of several seconds to allow some OWD data to build up
sleep(baseline_sleep_time);
loop {
// Capture current time at the start of each iteration for metric timestamps
let clock = Time::new(ClockId::Realtime);
/*
* Selection is triggered either by some other thread triggering it through the channel,
* or it passes the timeout. In any case we don't care about the result of this function,