From 3b65465e106c2c60d39acc1491fcb09d870827c7 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Tue, 14 Jan 2025 14:53:41 +0100 Subject: [PATCH] turns out with the switch to sync Mutex there's no reason for upgrade() to be async either --- pageserver/src/page_service.rs | 17 +++++------------ pageserver/src/tenant/timeline/handle.rs | 10 +++++----- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/pageserver/src/page_service.rs b/pageserver/src/page_service.rs index ba410e4bd5..d75444472f 100644 --- a/pageserver/src/page_service.rs +++ b/pageserver/src/page_service.rs @@ -967,14 +967,7 @@ impl PageServerHandler { fail::fail_point!("ps::handle-pagerequest-message::exists"); ( vec![self - .handle_get_rel_exists_request( - &*shard - .upgrade() - // TODO: need sensitive to cancel() - .await?, - &req, - ctx, - ) + .handle_get_rel_exists_request(&*shard.upgrade()?, &req, ctx) .instrument(span.clone()) .await .map(|msg| (msg, timer)) @@ -991,7 +984,7 @@ impl PageServerHandler { fail::fail_point!("ps::handle-pagerequest-message::nblocks"); ( vec![self - .handle_get_nblocks_request(&*shard.upgrade().await?, &req, ctx) + .handle_get_nblocks_request(&*shard.upgrade()?, &req, ctx) .instrument(span.clone()) .await .map(|msg| (msg, timer)) @@ -1012,7 +1005,7 @@ impl PageServerHandler { trace!(npages, "handling getpage request"); let res = self .handle_get_page_at_lsn_request_batched( - &*shard.upgrade().await?, + &*shard.upgrade()?, effective_request_lsn, pages, ctx, @@ -1034,7 +1027,7 @@ impl PageServerHandler { fail::fail_point!("ps::handle-pagerequest-message::dbsize"); ( vec![self - .handle_db_size_request(&*shard.upgrade().await?, &req, ctx) + .handle_db_size_request(&*shard.upgrade()?, &req, ctx) .instrument(span.clone()) .await .map(|msg| (msg, timer)) @@ -1051,7 +1044,7 @@ impl PageServerHandler { fail::fail_point!("ps::handle-pagerequest-message::slrusegment"); ( vec![self - .handle_get_slru_segment_request(&*shard.upgrade().await?, &req, ctx) + .handle_get_slru_segment_request(&*shard.upgrade()?, &req, ctx) .instrument(span.clone()) .await .map(|msg| (msg, timer)) diff --git a/pageserver/src/tenant/timeline/handle.rs b/pageserver/src/tenant/timeline/handle.rs index c1b5091f77..a2c38d5a2d 100644 --- a/pageserver/src/tenant/timeline/handle.rs +++ b/pageserver/src/tenant/timeline/handle.rs @@ -264,11 +264,11 @@ impl Cache { tenant_manager: &T::TenantManager, ) -> Result, GetError> { let miss: ShardSelector = { - let routing_state = self.shard_routing(timeline_id, shard_selector).await; + let routing_state = self.shard_routing(timeline_id, shard_selector); match routing_state { RoutingResult::FastPath(handle) => return Ok(handle), RoutingResult::SlowPath(key) => match self.map.get(&key) { - Some(cached) => match cached.upgrade().await { + Some(cached) => match cached.upgrade() { Ok(upgraded) => return Ok(upgraded), Err(HandleUpgradeError::ShutDown) => { // TODO: dedup with shard_routing() @@ -286,7 +286,7 @@ impl Cache { } #[inline(always)] - async fn shard_routing( + fn shard_routing( &mut self, timeline_id: TimelineId, shard_selector: ShardSelector, @@ -296,7 +296,7 @@ impl Cache { let Some((first_key, first_handle)) = self.map.iter().next() else { return RoutingResult::NeedConsultTenantManager; }; - let Ok(first_handle) = first_handle.upgrade().await else { + let Ok(first_handle) = first_handle.upgrade() else { // TODO: dedup with get_impl() trace!("handle cache stale"); let first_key_owned = *first_key; @@ -416,7 +416,7 @@ pub(crate) enum HandleUpgradeError { } impl WeakHandle { - pub(crate) async fn upgrade(&self) -> Result, HandleUpgradeError> { + pub(crate) fn upgrade(&self) -> Result, HandleUpgradeError> { let Some(inner) = Weak::upgrade(&self.inner) else { return Err(HandleUpgradeError::ShutDown); };