aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-08-31 11:36:30 +0200
committerAlex Auvolat <alex@adnab.me>2023-08-31 11:36:30 +0200
commit1cdc321e28ccfbbe425365f3a03a526c3f456e3f (patch)
tree10d5c0e7c97a25238b24bd3d3961eb2b1ca873d0 /src/model
parentf579d6d9b42ef03d639cc7356b2fa15265074120 (diff)
downloadgarage-1cdc321e28ccfbbe425365f3a03a526c3f456e3f.tar.gz
garage-1cdc321e28ccfbbe425365f3a03a526c3f456e3f.zip
lifecycle worker: don't get stuck on non-existent bucket
Diffstat (limited to 'src/model')
-rw-r--r--src/model/s3/lifecycle_worker.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/model/s3/lifecycle_worker.rs b/src/model/s3/lifecycle_worker.rs
index 0747ffb8..ed762413 100644
--- a/src/model/s3/lifecycle_worker.rs
+++ b/src/model/s3/lifecycle_worker.rs
@@ -249,11 +249,22 @@ async fn process_object(
let bucket = match last_bucket.take() {
Some(b) if b.id == object.bucket_id => b,
- _ => garage
- .bucket_table
- .get(&EmptyKey, &object.bucket_id)
- .await?
- .ok_or_message("object in non-existent bucket")?,
+ _ => {
+ match garage
+ .bucket_table
+ .get(&EmptyKey, &object.bucket_id)
+ .await?
+ {
+ Some(b) => b,
+ None => {
+ warn!(
+ "Lifecycle worker: object in non-existent bucket {:?}",
+ object.bucket_id
+ );
+ return Ok(Skip::SkipBucket);
+ }
+ }
+ }
};
let lifecycle_policy: &[LifecycleRule] = bucket