[pdm-devel] [PATCH proxmox-datacenter-manager v2 09/28] metric collection: skip if last_collection < MIN_COLLECTION_INTERVAL

Lukas Wagner l.wagner at proxmox.com
Fri Feb 14 14:06:34 CET 2025


It makes sense to limit the collection frequency per remote, especially
since we will have the ability to trigger collection manually.

Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
---
 server/src/metric_collection/collection_task.rs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/server/src/metric_collection/collection_task.rs b/server/src/metric_collection/collection_task.rs
index f985bd3e..744a7ccc 100644
--- a/server/src/metric_collection/collection_task.rs
+++ b/server/src/metric_collection/collection_task.rs
@@ -15,7 +15,7 @@ use proxmox_sys::fs::CreateOptions;
 
 use pdm_api_types::{
     remotes::{Remote, RemoteType},
-    CollectionSettings,
+    CollectionSettings, MIN_COLLECTION_INTERVAL,
 };
 use pdm_config::metric_collection::COLLECTION_SETTINGS_TYPE;
 
@@ -219,6 +219,7 @@ impl MetricCollectionTask {
             self.settings.max_concurrent_connections_or_default(),
         ));
         let mut handles = Vec::new();
+        let now = proxmox_time::epoch_i64();
 
         for remote_name in remotes_to_fetch {
             let status = self
@@ -227,6 +228,13 @@ impl MetricCollectionTask {
                 .cloned()
                 .unwrap_or_default();
 
+            if now - status.last_collection.unwrap_or(0) < MIN_COLLECTION_INTERVAL as i64 {
+                log::debug!(
+                    "skipping metric collection for remote '{remote_name}' - data is recent enough"
+                );
+                continue;
+            }
+
             // unwrap is okay here, acquire_* will only fail if `close` has been
             // called on the semaphore.
             let permit = Arc::clone(&semaphore).acquire_owned().await.unwrap();
-- 
2.39.5





More information about the pdm-devel mailing list