From 6c81cf38929ed1c6ebaa79d6233d7038202d6984 Mon Sep 17 00:00:00 2001 From: Alex Chi Z Date: Wed, 2 Jul 2025 13:55:31 -0700 Subject: [PATCH] fix(pageserver): do not allow delete to bypass upload metadata Signed-off-by: Alex Chi Z --- pageserver/src/tenant/upload_queue.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/pageserver/src/tenant/upload_queue.rs b/pageserver/src/tenant/upload_queue.rs index be1b55ffa3..27d1dbdf74 100644 --- a/pageserver/src/tenant/upload_queue.rs +++ b/pageserver/src/tenant/upload_queue.rs @@ -544,12 +544,8 @@ impl UploadOp { let uname = u.layer_desc().layer_name(); !i.references(&uname, umeta) && !index.references(&uname, umeta) } - (UploadOp::Delete(d), UploadOp::UploadMetadata { uploaded: i }) - | (UploadOp::UploadMetadata { uploaded: i }, UploadOp::Delete(d)) => { - d.layers.iter().all(|(dname, dmeta)| { - !i.references(dname, dmeta) && !index.references(dname, dmeta) - }) - } + (UploadOp::Delete(_), UploadOp::UploadMetadata { .. }) + | (UploadOp::UploadMetadata { .. }, UploadOp::Delete(_)) => false, // Indexes can never bypass each other. They can coalesce though, and // `UploadQueue::next_ready()` currently does this when possible.