fix another issue

This commit is contained in:
Carl Lerche 2023-06-12 13:45:08 -07:00
parent 22ccfe48c1
commit fab5adc17c
No known key found for this signature in database
GPG Key ID: FC5ADF3A4B2E5977

View File

@ -541,11 +541,15 @@ impl Worker {
}
}
debug_assert!(cx.defer.borrow().is_empty());
self.pre_shutdown(cx, &mut core);
// Signal shutdown
self.shutdown_core(cx, core);
debug_assert!(cx.defer.borrow().is_empty());
Err(())
}
@ -577,6 +581,7 @@ impl Worker {
// If shutting down, abort
if cx.shared().inject.is_closed(&synced.inject) {
self.shutdown_clear_defer(cx);
return Err(());
}
@ -654,6 +659,9 @@ impl Worker {
}
}
// Shutting down, drop any deferred tasks
self.shutdown_clear_defer(cx);
Ok((None, core))
}
@ -1051,6 +1059,7 @@ impl Worker {
cx.shared().driver.set(driver);
if cx.shared().inject.is_closed(&mut synced.inject) {
self.shutdown_clear_defer(cx);
self.shutdown_finalize(cx, synced);
return Err(());
}
@ -1167,6 +1176,14 @@ impl Worker {
core.global_queue_interval = next;
}
}
fn shutdown_clear_defer(&self, cx: &Context) {
let mut defer = cx.defer.borrow_mut();
for task in defer.drain(..) {
drop(task);
}
}
}
impl Context {