From c323ae6d0fed1049b3ed7e2a1ecfcc947f37dfce Mon Sep 17 00:00:00 2001 From: Matthieu Le brazidec Date: Mon, 11 Nov 2019 19:57:52 +0100 Subject: [PATCH] Fixed the supervisors' detection of already stopped supervised elements for when calling callbacks. --- bastion/src/supervisor.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/bastion/src/supervisor.rs b/bastion/src/supervisor.rs index 300c6c4b..7d6024f1 100644 --- a/bastion/src/supervisor.rs +++ b/bastion/src/supervisor.rs @@ -179,16 +179,15 @@ impl Supervisor { let parent = Parent::supervisor(self.as_ref()); let mut reset = FuturesOrdered::new(); for id in self.order.drain(..) { - let supervised = if let Some(supervised) = self.stopped.remove(&id) { - supervised + let (killed, supervised) = if let Some(supervised) = self.stopped.remove(&id) { + (false, supervised) } else if let Some(supervised) = self.killed.remove(&id) { - supervised + (true, supervised) } else { // FIXME unimplemented!(); }; - let killed = self.killed.contains_key(supervised.id()); if killed { supervised.callbacks().before_restart(); } @@ -581,16 +580,15 @@ impl Supervisor { let parent = Parent::supervisor(self.as_ref()); let mut reset = FuturesOrdered::new(); for id in self.order.drain(range) { - let supervised = if let Some(supervised) = self.stopped.remove(&id) { - supervised + let (killed, supervised) = if let Some(supervised) = self.stopped.remove(&id) { + (false, supervised) } else if let Some(supervised) = self.killed.remove(&id) { - supervised + (true, supervised) } else { // FIXME unimplemented!(); }; - let killed = self.killed.contains_key(supervised.id()); if killed { supervised.callbacks().before_restart(); }