This commit is contained in:
Marcel Märtens 2021-04-13 20:17:50 +02:00
parent 149fc5ac76
commit ca4732bd29

View File

@ -294,7 +294,7 @@ impl Scheduler {
trace!(?pid, "Got request to close participant"); trace!(?pid, "Got request to close participant");
let pi = participants.lock().await.remove(&pid); let pi = participants.lock().await.remove(&pid);
trace!(?pid, "dropped participants lock"); trace!(?pid, "dropped participants lock");
if let Some(mut pi) = pi { let r = if let Some(mut pi) = pi {
let (finished_sender, finished_receiver) = oneshot::channel(); let (finished_sender, finished_receiver) = oneshot::channel();
pi.s2b_shutdown_bparticipant_s pi.s2b_shutdown_bparticipant_s
.take() .take()
@ -305,13 +305,18 @@ impl Scheduler {
trace!(?pid, "dropped bparticipant, waiting for finish"); trace!(?pid, "dropped bparticipant, waiting for finish");
let e = finished_receiver.await.unwrap(); let e = finished_receiver.await.unwrap();
trace!(?pid, "waiting completed"); trace!(?pid, "waiting completed");
return_once_successful_shutdown.send(e).unwrap(); // can fail as api.rs has a timeout
return_once_successful_shutdown.send(e)
} else { } else {
debug!(?pid, "Looks like participant is already dropped"); debug!(?pid, "Looks like participant is already dropped");
return_once_successful_shutdown.send(Ok(())).unwrap(); return_once_successful_shutdown.send(Ok(()))
} };
if r.is_err() {
trace!(?pid, "Closed participant with timeout");
} else {
trace!(?pid, "Closed participant"); trace!(?pid, "Closed participant");
} }
}
}, },
) )
.await; .await;
@ -332,7 +337,9 @@ impl Scheduler {
async fn scheduler_shutdown_mgr(&self, a2s_scheduler_shutdown_r: oneshot::Receiver<()>) { async fn scheduler_shutdown_mgr(&self, a2s_scheduler_shutdown_r: oneshot::Receiver<()>) {
trace!("Start scheduler_shutdown_mgr"); trace!("Start scheduler_shutdown_mgr");
a2s_scheduler_shutdown_r.await.unwrap(); if a2s_scheduler_shutdown_r.await.is_err() {
warn!("Schedule shutdown got triggered because a2s_scheduler_shutdown_r failed");
};
info!("Shutdown of scheduler requested"); info!("Shutdown of scheduler requested");
self.closed.store(true, Ordering::SeqCst); self.closed.store(true, Ordering::SeqCst);
debug!("Shutting down all BParticipants gracefully"); debug!("Shutting down all BParticipants gracefully");