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:
3 files changed
+6
-8
No files matched your search
+2
-3
@@ -46,10 +46,9 @@ impl Baseliner {
|
|||||||
let slow_factor = ewma_factor(self.config.tick_interval, 135.0);
|
let slow_factor = ewma_factor(self.config.tick_interval, 135.0);
|
||||||
let fast_factor = ewma_factor(self.config.tick_interval, 0.4);
|
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 {
|
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 time_data = self.stats_rx.recv()?;
|
||||||
|
|
||||||
let mut owd_baseline_map = self.owd_baseline.lock_anyhow()?;
|
let mut owd_baseline_map = self.owd_baseline.lock_anyhow()?;
|
||||||
|
|||||||
+2
-3
@@ -59,10 +59,9 @@ pub trait PingListener {
|
|||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
let socket = &mut open_socket(type_)?;
|
let socket = &mut open_socket(type_)?;
|
||||||
|
|
||||||
// We need a realtime clock when exporting metrics
|
|
||||||
let clock = Time::new(ClockId::Realtime);
|
|
||||||
|
|
||||||
loop {
|
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() {
|
let (pkt, sender) = match socket.rcv_from() {
|
||||||
Ok(val) => val,
|
Ok(val) => val,
|
||||||
Err(_) => continue,
|
Err(_) => continue,
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ impl ReflectorSelector {
|
|||||||
let mut reselection_count = 0;
|
let mut reselection_count = 0;
|
||||||
let baseline_sleep_time =
|
let baseline_sleep_time =
|
||||||
Duration::from_secs_f64(self.config.tick_interval * std::f64::consts::PI);
|
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
|
// Initial wait of several seconds to allow some OWD data to build up
|
||||||
sleep(baseline_sleep_time);
|
sleep(baseline_sleep_time);
|
||||||
|
|
||||||
loop {
|
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,
|
* 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,
|
* or it passes the timeout. In any case we don't care about the result of this function,
|
||||||
|
|||||||
Reference in new issue
Block a user