From c5e6adc87af53852d733e815cf2750cdf7743f64 Mon Sep 17 00:00:00 2001 From: teor Date: Wed, 2 Nov 2022 12:43:13 +1000 Subject: [PATCH] Return an error instead of panicking on shutdown (#5530) --- tower-batch/src/service.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tower-batch/src/service.rs b/tower-batch/src/service.rs index 29df281f6..de239818e 100644 --- a/tower-batch/src/service.rs +++ b/tower-batch/src/service.rs @@ -240,8 +240,16 @@ where { match Pin::new(worker_handle).poll(cx) { Poll::Ready(Ok(())) => return Poll::Ready(Err(self.get_worker_error())), - Poll::Ready(task_panic) => { - task_panic.expect("unexpected panic in batch worker task") + Poll::Ready(Err(task_cancelled)) if task_cancelled.is_cancelled() => { + tracing::warn!( + "batch task cancelled: {task_cancelled}\n\ + Is Zebra shutting down?" + ); + + return Poll::Ready(Err(task_cancelled.into())); + } + Poll::Ready(Err(task_panic)) => { + std::panic::resume_unwind(task_panic.into_panic()); } Poll::Pending => {} }