From 63221e4b4268be1e49c133fa9eac592b870025de Mon Sep 17 00:00:00 2001 From: Arseny Sher Date: Thu, 3 Nov 2022 08:30:07 +0400 Subject: [PATCH] Fix sk->ps walsender shutdown on sk side on caughtup. This will fix many threads issue, but code around awfully still wants improvement. https://github.com/neondatabase/neon/issues/2722 --- safekeeper/src/timeline.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/safekeeper/src/timeline.rs b/safekeeper/src/timeline.rs index 1930b3574a..d8d1fb98ad 100644 --- a/safekeeper/src/timeline.rs +++ b/safekeeper/src/timeline.rs @@ -555,13 +555,20 @@ impl Timeline { if self.is_cancelled() { return true; } - let mut shared_state = self.write_shared_state(); if shared_state.num_computes == 0 { let replica_state = shared_state.replicas[replica_id].unwrap(); + let reported_remote_consistent_lsn = replica_state + .pageserver_feedback + .map(|f| Lsn(f.ps_applylsn)) + .unwrap_or(Lsn::INVALID); + info!( + "checking should ws stop ttid {} lsn {} rcl {}", + self.ttid, reported_remote_consistent_lsn, shared_state.sk.inmem.commit_lsn + ); let stop = shared_state.sk.inmem.commit_lsn == Lsn(0) || // no data at all yet - (replica_state.remote_consistent_lsn != Lsn::MAX && // Lsn::MAX means that we don't know the latest LSN yet. - replica_state.remote_consistent_lsn >= shared_state.sk.inmem.commit_lsn); + (reported_remote_consistent_lsn!= Lsn::MAX && // Lsn::MAX means that we don't know the latest LSN yet. + reported_remote_consistent_lsn >= shared_state.sk.inmem.commit_lsn); if stop { shared_state.update_status(self.ttid); return true;