From c46fe90010adaee8a241a2241b417ecff2f037d9 Mon Sep 17 00:00:00 2001 From: Arseny Sher Date: Thu, 5 May 2022 07:43:55 +0400 Subject: [PATCH] Fix division by zero in WAL removal. --- safekeeper/src/safekeeper.rs | 4 +--- safekeeper/src/timeline.rs | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/safekeeper/src/safekeeper.rs b/safekeeper/src/safekeeper.rs index 67d41d0b58..68361fd672 100644 --- a/safekeeper/src/safekeeper.rs +++ b/safekeeper/src/safekeeper.rs @@ -938,9 +938,7 @@ where ), self.state.s3_wal_lsn, ); - let res = horizon_lsn.segment_number(self.state.server.wal_seg_size as usize); - info!("horizon is {}, res {}", horizon_lsn, res); - res + horizon_lsn.segment_number(self.state.server.wal_seg_size as usize) } } diff --git a/safekeeper/src/timeline.rs b/safekeeper/src/timeline.rs index 745d8e0893..47137091da 100644 --- a/safekeeper/src/timeline.rs +++ b/safekeeper/src/timeline.rs @@ -469,6 +469,10 @@ impl Timeline { let remover: Box Result<(), anyhow::Error>>; { let shared_state = self.mutex.lock().unwrap(); + // WAL seg size not initialized yet, no WAL exists. + if shared_state.sk.state.server.wal_seg_size == 0 { + return Ok(()); + } horizon_segno = shared_state.sk.get_horizon_segno(); remover = shared_state.sk.wal_store.remove_up_to(); if horizon_segno <= 1 || horizon_segno <= shared_state.last_removed_segno {