From af33e8fa6cd52c1cc27ec7a7a0065171e69953ba Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Mon, 18 Dec 2023 16:19:48 +0000 Subject: [PATCH] pagebench: finish trigger initial logical size calculation benchmark --- .../src/trigger_initial_size_calculation.rs | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/pageserver/pagebench/src/trigger_initial_size_calculation.rs b/pageserver/pagebench/src/trigger_initial_size_calculation.rs index ba0496f733..2e2ecfa236 100644 --- a/pageserver/pagebench/src/trigger_initial_size_calculation.rs +++ b/pageserver/pagebench/src/trigger_initial_size_calculation.rs @@ -66,20 +66,25 @@ async fn main_impl(args: Args) -> anyhow::Result<()> { for tl in timelines { let mgmt_api_client = Arc::clone(&mgmt_api_client); js.spawn(async move { - // TODO: API to explicitly trigger initial logical size computation - let mut _info = mgmt_api_client + // TODO: API to explicitly trigger initial logical size computation. + // Should probably also avoid making it a side effect of timeline details to trigger initial logical size calculation. + // => https://github.com/neondatabase/neon/issues/6168 + let info = mgmt_api_client .timeline_info(tl.tenant_id, tl.timeline_id) .await .unwrap(); - if let Some(_period) = args.poll_for_completion { - todo!("unimplemented: need to rebase for this"); - // let mut ticker = tokio::time::interval(period); - // ticker.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay) - // while info.current_logical_size_is_accurate { - // ticker.tick().await; - // mgmt_api_client.timeline_info(tenant_id, timeline_id) - // } + if let Some(period) = args.poll_for_completion { + let mut ticker = tokio::time::interval(period.into()); + ticker.set_missed_tick_behavior(tokio::time::MissedTickBehavior::Delay); + let mut info = info; + while !info.current_logical_size_is_accurate { + ticker.tick().await; + info = mgmt_api_client + .timeline_info(tl.tenant_id, tl.timeline_id) + .await + .unwrap(); + } } }); }