From 02ef246db6727bbac1564262e473d071cc93a2c8 Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Wed, 28 Jun 2023 09:18:45 +0300 Subject: [PATCH] refactor: to pattern of await after timeout (#4432) Refactor the `!completed` to be about `Option<_>` instead, side-stepping any boolean true/false or false/true. As discussed on https://github.com/neondatabase/neon/pull/4399#discussion_r1219321848 --- pageserver/src/task_mgr.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pageserver/src/task_mgr.rs b/pageserver/src/task_mgr.rs index d8db12a113..13db38d956 100644 --- a/pageserver/src/task_mgr.rs +++ b/pageserver/src/task_mgr.rs @@ -506,17 +506,17 @@ pub async fn shutdown_tasks( warn!(name = task.name, tenant_id = ?tenant_id, timeline_id = ?timeline_id, kind = ?task_kind, "stopping left-over"); } } - let completed = tokio::select! { + let join_handle = tokio::select! { biased; - _ = &mut join_handle => { true }, + _ = &mut join_handle => { None }, _ = tokio::time::sleep(std::time::Duration::from_secs(1)) => { // allow some time to elapse before logging to cut down the number of log // lines. info!("waiting for {} to shut down", task.name); - false + Some(join_handle) } }; - if !completed { + if let Some(join_handle) = join_handle { // we never handled this return value, but: // - we don't deschedule which would lead to is_cancelled // - panics are already logged (is_panicked)