refactor(observability): initialize metrics collection earlier in the startup sequence
Move the metrics thread and error channel initialization before the settling period and peer setup to ensure early telemetry is captured.
This commit is contained in:
1 file changed
+16
-17
+16
-17
@@ -80,6 +80,7 @@ fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
|
||||
let (baseliner_stats_tx, baseliner_stats_rx) = channel();
|
||||
let (error_tx, error_rx) = channel::<anyhow::Error>();
|
||||
let (reselect_tx, reselect_rx) = channel();
|
||||
|
||||
let (metrics_tx, metrics_rx) = if config.observability_enabled {
|
||||
@@ -89,6 +90,21 @@ fn main() -> anyhow::Result<()> {
|
||||
(None, None)
|
||||
};
|
||||
|
||||
if let Some(rx) = metrics_rx {
|
||||
let metrics = Metrics {
|
||||
config: config.clone(),
|
||||
metrics_rx: rx,
|
||||
};
|
||||
let err_tx = error_tx.clone();
|
||||
thread::Builder::new()
|
||||
.name("metrics".to_string())
|
||||
.spawn(move || {
|
||||
if let Err(e) = metrics.run() {
|
||||
let _ = err_tx.send(e);
|
||||
}
|
||||
})?;
|
||||
}
|
||||
|
||||
let ping_metrics_tx = metrics_tx
|
||||
.as_ref()
|
||||
.filter(|_| config.observability_export_ping_metrics)
|
||||
@@ -157,8 +173,6 @@ fn main() -> anyhow::Result<()> {
|
||||
);
|
||||
sleep(settle_sleep_time);
|
||||
|
||||
let (error_tx, error_rx) = channel::<anyhow::Error>();
|
||||
|
||||
let err_tx = error_tx.clone();
|
||||
let reflector_peers_lock_clone = reflector_peers_lock.clone();
|
||||
thread::Builder::new()
|
||||
@@ -266,21 +280,6 @@ fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
})?;
|
||||
|
||||
if let Some(rx) = metrics_rx {
|
||||
let metrics = Metrics {
|
||||
config,
|
||||
metrics_rx: rx,
|
||||
};
|
||||
let err_tx = error_tx.clone();
|
||||
thread::Builder::new()
|
||||
.name("metrics".to_string())
|
||||
.spawn(move || {
|
||||
if let Err(e) = metrics.run() {
|
||||
let _ = err_tx.send(e);
|
||||
}
|
||||
})?;
|
||||
}
|
||||
|
||||
// Drop original sender so recv() unblocks if all threads exit cleanly
|
||||
drop(error_tx);
|
||||
|
||||
|
||||
Reference in new issue
Block a user