[pdm-devel] [PATCH proxmox-datacenter-manager v3 07/26] metric collection: skip if last_collection < MIN_COLLECTION_INTERVAL
Lukas Wagner
l.wagner at proxmox.com
Wed Apr 16 14:56:23 CEST 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>
Reviewed-by: Maximiliano Sandoval <m.sandoval 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 ce3d650d..1e613e86 100644
--- a/server/src/metric_collection/collection_task.rs
+++ b/server/src/metric_collection/collection_task.rs
@@ -14,7 +14,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;
@@ -192,6 +192,7 @@ impl MetricCollectionTask {
) {
let semaphore = Arc::new(Semaphore::new(MAX_CONCURRENT_CONNECTIONS));
let mut handles = Vec::new();
+ let now = proxmox_time::epoch_i64();
for remote_name in remotes_to_fetch {
let status = self
@@ -200,6 +201,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