From 373fa7c2acfcaffd2c8c4ed89d1311d4bc757c1b Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Mon, 9 Oct 2023 20:21:22 +0000 Subject: [PATCH] origin/problame/page-cache-forward-progress/3: trace spans and events only for tests --- libs/nostarve_queue/src/lib.rs | 8 ++++++++ pageserver/src/page_cache.rs | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libs/nostarve_queue/src/lib.rs b/libs/nostarve_queue/src/lib.rs index 885e77c45b..57cd7f7b43 100644 --- a/libs/nostarve_queue/src/lib.rs +++ b/libs/nostarve_queue/src/lib.rs @@ -82,6 +82,7 @@ impl Queue { } } pub fn begin(&self) -> Result, ()> { + #[cfg(test)] tracing::trace!("get in line locking inner"); let mut inner = self.inner.lock().unwrap(); inner.integrity_check(); @@ -102,10 +103,12 @@ impl Queue { impl<'q, T> Position<'q, T> { pub fn complete_and_wait(self, datum: T) -> impl std::future::Future + 'q { + #[cfg(test)] tracing::trace!("found victim locking waiters"); let mut inner = self.queue.inner.lock().unwrap(); inner.integrity_check(); let winner_idx = inner.waiters.pop_front().expect("we put ourselves in"); + #[cfg(test)] tracing::trace!(winner_idx, "putting victim into next waiters slot"); let winner_slot = inner.slots[winner_idx].as_mut().unwrap(); let prev = winner_slot.1.replace(datum); @@ -114,6 +117,7 @@ impl<'q, T> Position<'q, T> { "ensure we didn't mess up this simple ring buffer structure" ); if let Some(waker) = winner_slot.0.take() { + #[cfg(test)] tracing::trace!(winner_idx, "waking up winner"); waker.wake() } @@ -129,6 +133,7 @@ impl<'q, T> Position<'q, T> { poll_fn(move |cx| { let my_waitslot_idx = self.idx; poll_num += 1; + #[cfg(test)] tracing::trace!(poll_num, "poll_fn locking waiters"); let mut inner = self.queue.inner.lock().unwrap(); inner.integrity_check(); @@ -139,6 +144,7 @@ impl<'q, T> Position<'q, T> { // my_waitslot.1.is_some() // ); if let Some(res) = my_waitslot.1.take() { + #[cfg(test)] tracing::trace!(poll_num, "have cache slot"); // above .take() resets the waiters slot to None debug_assert!(my_waitslot.0.is_none()); @@ -157,9 +163,11 @@ impl<'q, T> Position<'q, T> { .unwrap_or(false) { let prev = my_waitslot.0.replace(cx.waker().clone()); + #[cfg(test)] tracing::trace!(poll_num, prev_is_some = prev.is_some(), "updating waker"); } inner.integrity_check(); + #[cfg(test)] tracing::trace!(poll_num, "waiting to be woken up"); Poll::Pending }) diff --git a/pageserver/src/page_cache.rs b/pageserver/src/page_cache.rs index 95c8a817c3..8d1010d29d 100644 --- a/pageserver/src/page_cache.rs +++ b/pageserver/src/page_cache.rs @@ -443,7 +443,7 @@ impl PageCache { /// /// Store an image of the given page in the cache. /// - #[instrument(skip_all, level = "trace", fields(%key, %lsn))] + #[cfg_attr(test, instrument(skip_all, level = "trace", fields(%key, %lsn)))] pub async fn memorize_materialized_page( &'static self, tenant_id: TenantId, @@ -536,7 +536,7 @@ impl PageCache { // Section 1.2: Public interface functions for working with immutable file pages. - #[instrument(skip_all, level = "trace", fields(?file_id, ?blkno))] + #[cfg_attr(test, instrument(skip_all, level = "trace", fields(?file_id, ?blkno)))] pub async fn read_immutable_buf( &'static self, file_id: FileId,