Fix periodic metric sending: don't reset timer on every iteration (#3617)

Previously timer was reset on every collect_metrics_iteration and sending of cached metrics was never triggered.

This is a follow-up for a69da4a7.
This commit is contained in:
Anastasia Lubennikova
2023-02-16 10:56:42 +02:00
committed by GitHub
parent ddbdcdddd7
commit 7991bd3b69

View File

@@ -75,7 +75,7 @@ pub async fn collect_metrics(
// define client here to reuse it for all requests
let client = reqwest::Client::new();
let mut cached_metrics: HashMap<PageserverConsumptionMetricsKey, u64> = HashMap::new();
let mut prev_iteration_time: Option<std::time::Instant> = None;
let mut prev_iteration_time: std::time::Instant = std::time::Instant::now();
loop {
tokio::select! {
@@ -86,11 +86,11 @@ pub async fn collect_metrics(
_ = ticker.tick() => {
// send cached metrics every cached_metric_collection_interval
let send_cached = prev_iteration_time
.map(|x| x.elapsed() >= cached_metric_collection_interval)
.unwrap_or(false);
let send_cached = prev_iteration_time.elapsed() >= cached_metric_collection_interval;
prev_iteration_time = Some(std::time::Instant::now());
if send_cached {
prev_iteration_time = std::time::Instant::now();
}
collect_metrics_iteration(&client, &mut cached_metrics, metric_collection_endpoint, node_id, &ctx, send_cached).await;
}