diff --git a/src/meta-srv/src/gc/candidate.rs b/src/meta-srv/src/gc/candidate.rs index 7d9ac9558b..05fc79ac52 100644 --- a/src/meta-srv/src/gc/candidate.rs +++ b/src/meta-srv/src/gc/candidate.rs @@ -88,7 +88,8 @@ impl GcScheduler { // Skip regions that are in cooldown period if let Some(gc_info) = tracker.get(®ion_stat.id) - && now.duration_since(gc_info.last_gc_time) < self.config.gc_cooldown_period + && now.saturating_duration_since(gc_info.last_gc_time) + < self.config.gc_cooldown_period { debug!("Skipping region {} due to cooldown", region_stat.id); continue; diff --git a/src/meta-srv/src/gc/handler.rs b/src/meta-srv/src/gc/handler.rs index c5574f1adb..4085f6289c 100644 --- a/src/meta-srv/src/gc/handler.rs +++ b/src/meta-srv/src/gc/handler.rs @@ -434,7 +434,7 @@ impl GcScheduler { if let Some(gc_info) = gc_tracker.get(®ion_id) { if let Some(last_full_listing) = gc_info.last_full_listing_time { // check if pass cooling down interval after last full listing - let elapsed = now.duration_since(last_full_listing); + let elapsed = now.saturating_duration_since(last_full_listing); elapsed >= self.config.full_file_listing_interval } else { // Never did full listing for this region, do it now diff --git a/src/meta-srv/src/gc/tracker.rs b/src/meta-srv/src/gc/tracker.rs index 991147bbf4..c5f93483a6 100644 --- a/src/meta-srv/src/gc/tracker.rs +++ b/src/meta-srv/src/gc/tracker.rs @@ -92,7 +92,7 @@ impl GcScheduler { if let Some(gc_info) = gc_tracker.get(®ion_id) { if let Some(last_full_listing) = gc_info.last_full_listing_time { - let elapsed = now.duration_since(last_full_listing); + let elapsed = now.saturating_duration_since(last_full_listing); elapsed >= self.config.full_file_listing_interval } else { // Never did full listing for this region, do it now