diff options
author | Alex <lx@deuxfleurs.fr> | 2025-02-14 17:32:30 +0000 |
---|---|---|
committer | Alex <lx@deuxfleurs.fr> | 2025-02-14 17:32:30 +0000 |
commit | 859b38b0d260a0833e5e604c873c7d259acff22e (patch) | |
tree | 6b9cf06b8ec2240035c61d610fb2419c08f8fd56 /src/model | |
parent | 89c944ebd6a08f27dae44d16e81c9487ec9f9c30 (diff) | |
parent | 2729a71d9dc55f142a7f89236b1c868a1bdb1c0f (diff) | |
download | garage-main.tar.gz garage-main.zip |
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/garage/pulls/959
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/garage.rs | 2 | ||||
-rw-r--r-- | src/model/helper/locked.rs | 9 | ||||
-rw-r--r-- | src/model/s3/lifecycle_worker.rs | 6 |
3 files changed, 12 insertions, 5 deletions
diff --git a/src/model/garage.rs b/src/model/garage.rs index 29e0bddd..11c0d90f 100644 --- a/src/model/garage.rs +++ b/src/model/garage.rs @@ -329,7 +329,7 @@ impl Garage { pub async fn locked_helper(&self) -> helper::locked::LockedHelper { let lock = self.bucket_lock.lock().await; - helper::locked::LockedHelper(self, lock) + helper::locked::LockedHelper(self, Some(lock)) } } diff --git a/src/model/helper/locked.rs b/src/model/helper/locked.rs index 43f4f363..482e91b0 100644 --- a/src/model/helper/locked.rs +++ b/src/model/helper/locked.rs @@ -27,9 +27,16 @@ use crate::permission::BucketKeyPerm; /// See issues: #649, #723 pub struct LockedHelper<'a>( pub(crate) &'a Garage, - pub(crate) tokio::sync::MutexGuard<'a, ()>, + pub(crate) Option<tokio::sync::MutexGuard<'a, ()>>, ); +impl<'a> Drop for LockedHelper<'a> { + fn drop(&mut self) { + // make it explicit that the mutexguard lives until here + drop(self.1.take()) + } +} + #[allow(clippy::ptr_arg)] impl<'a> LockedHelper<'a> { pub fn bucket(&self) -> BucketHelper<'a> { diff --git a/src/model/s3/lifecycle_worker.rs b/src/model/s3/lifecycle_worker.rs index 38212a1c..bb10ba48 100644 --- a/src/model/s3/lifecycle_worker.rs +++ b/src/model/s3/lifecycle_worker.rs @@ -395,13 +395,13 @@ fn midnight_ts(date: NaiveDate, use_local_tz: bool) -> u64 { .expect("bad local midnight") .timestamp_millis() as u64; } - midnight.timestamp_millis() as u64 + midnight.and_utc().timestamp_millis() as u64 } fn next_date(ts: u64) -> NaiveDate { - NaiveDateTime::from_timestamp_millis(ts as i64) + DateTime::<Utc>::from_timestamp_millis(ts as i64) .expect("bad timestamp") - .date() + .date_naive() .succ_opt() .expect("no next day") } |