diff --git a/compute_tools/src/lsn_lease.rs b/compute_tools/src/lsn_lease.rs index a04c986fbb..85b66e365c 100644 --- a/compute_tools/src/lsn_lease.rs +++ b/compute_tools/src/lsn_lease.rs @@ -62,7 +62,11 @@ async fn lsn_lease_bg_task( "Request succeeded, sleeping for {} seconds", sleep_duration.as_secs() ); - compute.wait_timeout_while_pageserver_connstr_unchanged(sleep_duration); + let compute = compute.clone(); + tokio::task::spawn_blocking(move || { + compute.wait_timeout_while_pageserver_connstr_unchanged(sleep_duration); + }) + .await?; } } diff --git a/test_runner/regress/test_readonly_node.py b/test_runner/regress/test_readonly_node.py index e151b0ba13..5ec123cd2b 100644 --- a/test_runner/regress/test_readonly_node.py +++ b/test_runner/regress/test_readonly_node.py @@ -233,15 +233,6 @@ def test_readonly_node_gc(neon_env_builder: NeonEnvBuilder): log.info(f"`SELECT` query succeed after GC, {ctx=}") return offset - # It's not reliable to let the compute renew the lease in this test case as we have a very tight - # lease timeout. Therefore, the test case itself will renew the lease. - # - # This is a workaround to make the test case more deterministic. - def renew_lease(env: NeonEnv, lease_lsn: Lsn): - env.storage_controller.pageserver_api().timeline_lsn_lease( - env.initial_tenant, env.initial_timeline, lease_lsn - ) - # Insert some records on main branch with env.endpoints.create_start("main", config_lines=["shared_buffers=1MB"]) as ep_main: with ep_main.cursor() as cur: @@ -254,9 +245,6 @@ def test_readonly_node_gc(neon_env_builder: NeonEnvBuilder): XLOG_BLCKSZ = 8192 lsn = Lsn((int(lsn) // XLOG_BLCKSZ) * XLOG_BLCKSZ) - # We need to mock the way cplane works: it gets a lease for a branch before starting the compute. - renew_lease(env, lsn) - with env.endpoints.create_start( branch_name="main", endpoint_id="static", @@ -277,8 +265,6 @@ def test_readonly_node_gc(neon_env_builder: NeonEnvBuilder): ps.stop() ps.start() - renew_lease(env, lsn) - trigger_gc_and_select( env, ep_static,