From faa15e32ee45fb93ba89c4417cf0cd57887e55af Mon Sep 17 00:00:00 2001 From: Bojan Serafimov Date: Tue, 3 May 2022 23:40:16 -0400 Subject: [PATCH] Add xlogoff --- pageserver/src/bin/replay.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pageserver/src/bin/replay.rs b/pageserver/src/bin/replay.rs index 12977f5f65..a16e151cf1 100644 --- a/pageserver/src/bin/replay.rs +++ b/pageserver/src/bin/replay.rs @@ -1,17 +1,18 @@ -use std::fs::File; use anyhow::Result; -use postgres_ffi::waldecoder::WalStreamDecoder; +use postgres_ffi::{pg_constants::WAL_SEGMENT_SIZE, waldecoder::WalStreamDecoder}; use utils::lsn::Lsn; #[tokio::main] async fn main() -> Result<()> { - let partial_path = "/home/bojan/tmp/pg_wal/000000010000000000000017"; - let startpos = Lsn(0); - let bytes = std::fs::read(partial_path)?; + let partial_path = "/home/bojan/tmp/sk_wal"; + let startpos = Lsn(23761464); // I got this by grepping sk log for "restart decoder" + let xlogoff: usize = startpos.segment_offset(WAL_SEGMENT_SIZE); let mut decoder = WalStreamDecoder::new(startpos); - decoder.feed_bytes(&bytes); + let bytes = std::fs::read(partial_path)?; + decoder.feed_bytes(&bytes[xlogoff..]); + while let Some((lsn, rec)) = decoder.poll_decode()? { println!("lsn: {}", lsn); }