From 8eaa4015de5d267aab36aa76ed9a201e6f1c2628 Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 16 Aug 2023 17:49:20 +0100 Subject: [PATCH] deletion queue: versions in keys --- pageserver/src/config.rs | 30 +++++++++++++++++++++++------- pageserver/src/deletion_queue.rs | 3 --- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/pageserver/src/config.rs b/pageserver/src/config.rs index cf4c043f5b..98476c2ccc 100644 --- a/pageserver/src/config.rs +++ b/pageserver/src/config.rs @@ -573,17 +573,33 @@ impl PageServerConf { } pub fn remote_deletion_list_path(&self, sequence: u64) -> RemotePath { - RemotePath::new( - &self - .remote_deletion_node_prefix() - .join(format!("{:016x}.list", sequence)), - ) + // Encode a version in the key, so that if we ever switch away from JSON we can + // increment this. + const VERSION: u8 = 1; + + // Placeholder, pending implementation of generation numbers + const GENERATION: u32 = 0; + + RemotePath::new(&self.remote_deletion_node_prefix().join(format!( + "{sequence:016x}-{GENERATION:08x}-{VERSION:02x}.list" + ))) .expect("This should always be convertible, it is relative") } pub fn remote_deletion_header_path(&self) -> RemotePath { - RemotePath::new(&self.remote_deletion_node_prefix().join("header")) - .expect("This should always be convertible, it is relative") + // Encode a version in the key, so that if we ever switch away from JSON we can + // increment this. + const VERSION: u8 = 1; + + // Placeholder, pending implementation of generation numbers + const GENERATION: u32 = 0; + + RemotePath::new( + &self + .remote_deletion_node_prefix() + .join(format!("header-{GENERATION:08x}-{VERSION:02x}")), + ) + .expect("This should always be convertible, it is relative") } pub fn tenant_path(&self, tenant_id: &TenantId) -> PathBuf { diff --git a/pageserver/src/deletion_queue.rs b/pageserver/src/deletion_queue.rs index bddf5cd805..dc4973dfaf 100644 --- a/pageserver/src/deletion_queue.rs +++ b/pageserver/src/deletion_queue.rs @@ -598,7 +598,6 @@ impl FrontendQueueWorker { .await?; debug!("Loaded {} keys in deletion prefix {}", lists.len(), prefix); - let list_name_pattern = Regex::new("([a-zA-Z0-9]{16})-([a-zA-Z0-9]{8})-([a-zA-Z0-9]{2}).list").unwrap(); @@ -630,8 +629,6 @@ impl FrontendQueueWorker { continue; }; - info!("seq_part {seq_part}"); - let seq: u64 = match u64::from_str_radix(seq_part, 16) { Ok(s) => s, Err(e) => {