From f5ca897292d78faf6a447a8f4542b1b1400e6dd1 Mon Sep 17 00:00:00 2001 From: Joonas Koivunen Date: Thu, 23 Mar 2023 12:00:52 +0200 Subject: [PATCH] fix: less logging at shutdown (#3866) Log less during shutdown; don't log anything for quickly (less than 1s) exiting tasks. --- pageserver/src/task_mgr.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/pageserver/src/task_mgr.rs b/pageserver/src/task_mgr.rs index 2734031a09..44b1bbb06d 100644 --- a/pageserver/src/task_mgr.rs +++ b/pageserver/src/task_mgr.rs @@ -481,13 +481,25 @@ pub async fn shutdown_tasks( for task in victim_tasks { let join_handle = { let mut task_mut = task.mutable.lock().unwrap(); - info!("waiting for {} to shut down", task.name); - let join_handle = task_mut.join_handle.take(); - drop(task_mut); - join_handle + task_mut.join_handle.take() }; - if let Some(join_handle) = join_handle { - let _ = join_handle.await; + if let Some(mut join_handle) = join_handle { + let completed = tokio::select! { + _ = &mut join_handle => { true }, + _ = 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 + } + }; + if !completed { + // we never handled this return value, but: + // - we don't deschedule which would lead to is_cancelled + // - panics are already logged (is_panicked) + // - task errors are already logged in the wrapper + let _ = join_handle.await; + } } else { // Possibly one of: // * The task had not even fully started yet.