From afc97a2e55f6b0d7ee44cb641c6d19fadf57cb79 Mon Sep 17 00:00:00 2001 From: Adam Jacob Date: Thu, 5 Nov 2015 14:54:21 -0800 Subject: [PATCH] Cleaning up a panic at exit I'm pretty sure we should be stopping all our actors before we exit, just out of kindness (and hidden race conditions). But, I'm not sure what went wrong, and this trades a race condition for a certain constant panic. Lets fix it in post :) Love, Adam --- src/bldr/topology/mod.rs | 3 ++- src/bldr/util/signals.rs | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/bldr/topology/mod.rs b/src/bldr/topology/mod.rs index 69e3d6ff36..3fc85c882c 100644 --- a/src/bldr/topology/mod.rs +++ b/src/bldr/topology/mod.rs @@ -381,6 +381,7 @@ fn run_internal<'a>(sm: &mut StateMachine, BldrError>, worker: // Next state! try!(sm.next(worker)); } - try!(SignalNotifier::stop(&handler)); + // Guess what? We don't seem to suffer from just shutting this shit down. + // try!(SignalNotifier::stop(&handler)); Ok(()) } diff --git a/src/bldr/util/signals.rs b/src/bldr/util/signals.rs index 5a3c247ef0..2668094bda 100644 --- a/src/bldr/util/signals.rs +++ b/src/bldr/util/signals.rs @@ -51,6 +51,7 @@ unsafe extern fn handle_signal(signal: u32) { pub enum Message { Signal(Signal), Stop, + Ok, } /// `i32` representation of each Unix Signal of interest. @@ -106,8 +107,8 @@ impl actor::GenServer for SignalNotifier { fn handle_call(&self, message: Self::T, _: &ActorSender, _: &ActorSender, _: &mut Self::S) -> HandleResult { match message { - Message::Stop => HandleResult::Stop(StopReason::Normal, None), - msg => HandleResult::Stop(StopReason::Fatal(format!("unexpected call message: {:?}", msg)), None), + Message::Stop => HandleResult::Stop(StopReason::Normal, Some(Message::Ok)), + msg => HandleResult::Stop(StopReason::Fatal(format!("unexpected call message: {:?}", msg)), Some(Message::Ok)), } }