diff --git a/pageserver/src/page_cache.rs b/pageserver/src/page_cache.rs index 1c05ea7e8f..db0a33b55b 100644 --- a/pageserver/src/page_cache.rs +++ b/pageserver/src/page_cache.rs @@ -597,17 +597,19 @@ impl PageCache { } } - // FIXME: Shouldn't relation size also be tracked with an LSN? - // If a replica is lagging behind, it needs to get the size as it was on - // the replica's current replay LSN. - pub fn relsize_inc(&self, rel: &RelTag, to: Option) { + /// Remember a relation's size in blocks. + /// + /// If 'to' is larger than the previously remembered size, the remembered size is increased to 'to'. + /// But if it's smaller, there is no change. + pub fn relsize_inc(&self, rel: &RelTag, to: u32) { + // FIXME: Shouldn't relation size also be tracked with an LSN? + // If a replica is lagging behind, it needs to get the size as it was on + // the replica's current replay LSN. let mut shared = self.shared.lock().unwrap(); let entry = shared.relsize_cache.entry(*rel).or_insert(0); - if let Some(to) = to { - if to >= *entry { - *entry = to + 1; - } + if to >= *entry { + *entry = to; } } diff --git a/pageserver/src/page_service.rs b/pageserver/src/page_service.rs index f704990f5e..9ff0b2cf46 100644 --- a/pageserver/src/page_service.rs +++ b/pageserver/src/page_service.rs @@ -600,7 +600,7 @@ impl Connection { forknum: req.forknum, }; - pcache.relsize_inc(&tag, None); + pcache.relsize_inc(&tag, 0); self.write_message(&BeMessage::ZenithStatusResponse(ZenithStatusResponse { ok: true, @@ -616,7 +616,7 @@ impl Connection { forknum: req.forknum, }; - pcache.relsize_inc(&tag, Some(req.blkno)); + pcache.relsize_inc(&tag, req.blkno + 1); self.write_message(&BeMessage::ZenithStatusResponse(ZenithStatusResponse { ok: true, diff --git a/pageserver/src/restore_datadir.rs b/pageserver/src/restore_datadir.rs index 985f5e3905..3b4f303bbc 100644 --- a/pageserver/src/restore_datadir.rs +++ b/pageserver/src/restore_datadir.rs @@ -333,7 +333,7 @@ async fn slurp_base_file( pcache.put_page_image(tag, parsed.lsn, bytes.copy_to_bytes(8192)); - pcache.relsize_inc(&reltag, Some(blknum)); + pcache.relsize_inc(&reltag, blknum + 1); blknum += 1; } }