From ef956c47fc89a5efbf39460c1850fe8853d60f99 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Wed, 24 May 2023 17:12:35 +0200 Subject: [PATCH] make it clear that `walreceiver_status` is always used in the branch where it's produced --- pageserver/src/tenant/timeline.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pageserver/src/tenant/timeline.rs b/pageserver/src/tenant/timeline.rs index f4f9a939a0..be6dc0770d 100644 --- a/pageserver/src/tenant/timeline.rs +++ b/pageserver/src/tenant/timeline.rs @@ -621,7 +621,8 @@ impl Timeline { .await { Ok(()) => Ok(()), - seqwait_error => { + Err(e) => { + // walreceiver.status() locks internally, don't count that towards the wait_lsn_time_histo drop(_timer); let walreceiver_status = { match &*self.walreceiver.lock().unwrap() { @@ -632,13 +633,15 @@ impl Timeline { }, } }; - seqwait_error.with_context(|| format!( - "Timed out while waiting for WAL record at LSN {} to arrive, last_record_lsn {} disk consistent LSN={}, WalReceiver status: {}", - lsn, - self.get_last_record_lsn(), - self.get_disk_consistent_lsn(), - walreceiver_status, - )) + Err(anyhow::Error::new(e).context({ + format!( + "Timed out while waiting for WAL record at LSN {} to arrive, last_record_lsn {} disk consistent LSN={}, WalReceiver status: {}", + lsn, + self.get_last_record_lsn(), + self.get_disk_consistent_lsn(), + walreceiver_status, + ) + })) } } }