aboutsummaryrefslogtreecommitdiff
path: root/src/model/s3
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/s3')
-rw-r--r--src/model/s3/lifecycle_worker.rs26
-rw-r--r--src/model/s3/object_table.rs12
-rw-r--r--src/model/s3/version_table.rs2
3 files changed, 25 insertions, 15 deletions
diff --git a/src/model/s3/lifecycle_worker.rs b/src/model/s3/lifecycle_worker.rs
index 9ecf168c..38212a1c 100644
--- a/src/model/s3/lifecycle_worker.rs
+++ b/src/model/s3/lifecycle_worker.rs
@@ -70,7 +70,7 @@ pub fn register_bg_vars(
impl LifecycleWorker {
pub fn new(garage: Arc<Garage>, persister: PersisterShared<LifecycleWorkerPersisted>) -> Self {
- let today = today();
+ let today = today(garage.config.use_local_tz);
let last_completed = persister.get_with(|x| {
x.last_completed
.as_deref()
@@ -205,8 +205,9 @@ impl Worker for LifecycleWorker {
async fn wait_for_work(&mut self) -> WorkerState {
match &self.state {
State::Completed(d) => {
+ let use_local_tz = self.garage.config.use_local_tz;
let next_day = d.succ_opt().expect("no next day");
- let next_start = midnight_ts(next_day);
+ let next_start = midnight_ts(next_day, use_local_tz);
loop {
let now = now_msec();
if now < next_start {
@@ -218,7 +219,7 @@ impl Worker for LifecycleWorker {
break;
}
}
- self.state = State::start(std::cmp::max(next_day, today()));
+ self.state = State::start(std::cmp::max(next_day, today(use_local_tz)));
}
State::Running { .. } => (),
}
@@ -385,10 +386,16 @@ fn check_size_filter(version_data: &ObjectVersionData, filter: &LifecycleFilter)
true
}
-fn midnight_ts(date: NaiveDate) -> u64 {
- date.and_hms_opt(0, 0, 0)
- .expect("midnight does not exist")
- .timestamp_millis() as u64
+fn midnight_ts(date: NaiveDate, use_local_tz: bool) -> u64 {
+ let midnight = date.and_hms_opt(0, 0, 0).expect("midnight does not exist");
+ if use_local_tz {
+ return midnight
+ .and_local_timezone(Local)
+ .single()
+ .expect("bad local midnight")
+ .timestamp_millis() as u64;
+ }
+ midnight.timestamp_millis() as u64
}
fn next_date(ts: u64) -> NaiveDate {
@@ -399,6 +406,9 @@ fn next_date(ts: u64) -> NaiveDate {
.expect("no next day")
}
-fn today() -> NaiveDate {
+fn today(use_local_tz: bool) -> NaiveDate {
+ if use_local_tz {
+ return Local::now().naive_local().date();
+ }
Utc::now().naive_utc().date()
}
diff --git a/src/model/s3/object_table.rs b/src/model/s3/object_table.rs
index 5c721148..6c33b79b 100644
--- a/src/model/s3/object_table.rs
+++ b/src/model/s3/object_table.rs
@@ -31,11 +31,11 @@ mod v08 {
/// The key at which the object is stored in its bucket, used as sorting key
pub key: String,
- /// The list of currenty stored versions of the object
+ /// The list of currently stored versions of the object
pub(super) versions: Vec<ObjectVersion>,
}
- /// Informations about a version of an object
+ /// Information about a version of an object
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
pub struct ObjectVersion {
/// Id of the version
@@ -109,11 +109,11 @@ mod v09 {
/// The key at which the object is stored in its bucket, used as sorting key
pub key: String,
- /// The list of currenty stored versions of the object
+ /// The list of currently stored versions of the object
pub(super) versions: Vec<ObjectVersion>,
}
- /// Informations about a version of an object
+ /// Information about a version of an object
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
pub struct ObjectVersion {
/// Id of the version
@@ -186,11 +186,11 @@ mod v010 {
/// The key at which the object is stored in its bucket, used as sorting key
pub key: String,
- /// The list of currenty stored versions of the object
+ /// The list of currently stored versions of the object
pub(super) versions: Vec<ObjectVersion>,
}
- /// Informations about a version of an object
+ /// Information about a version of an object
#[derive(PartialEq, Eq, Clone, Debug, Serialize, Deserialize)]
pub struct ObjectVersion {
/// Id of the version
diff --git a/src/model/s3/version_table.rs b/src/model/s3/version_table.rs
index d611a9e3..45be5af8 100644
--- a/src/model/s3/version_table.rs
+++ b/src/model/s3/version_table.rs
@@ -49,7 +49,7 @@ mod v08 {
pub offset: u64,
}
- /// Informations about a single block
+ /// Information about a single block
#[derive(PartialEq, Eq, Ord, PartialOrd, Clone, Copy, Debug, Serialize, Deserialize)]
pub struct VersionBlock {
/// Blake2 sum of the block