From 805d547f2d0111ca6e8fdd95858542c0f372e4d7 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Thu, 2 Feb 2017 19:43:50 -0600 Subject: [PATCH] Handle the PoisonError case somewhat gracefully. --- src/file.rs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/file.rs b/src/file.rs index 282be67..8aa2422 100644 --- a/src/file.rs +++ b/src/file.rs @@ -52,14 +52,19 @@ fn spawn_runner_thread(lock: Arc>, cmd: String, poll: Duration) { // Wait our requisit number of seconds thread::sleep(poll); // Default to not running the command. - let mut signal = lock.lock().unwrap(); - if *signal { - // set signal to false so we won't trigger on the - // next loop iteration unless we recieved more events. - *signal = false; - // Run our command! - if let Err(err) = run_cmd(&cmd) { - println!("{:?}", err) + match lock.lock() { + Ok(mut signal) => if *signal { + // set signal to false so we won't trigger on the + // next loop iteration unless we recieved more events. + *signal = false; + // Run our command! + if let Err(err) = run_cmd(&cmd) { + println!("{:?}", err) + } + }, + Err(err) => { + println!("Unexpected error; {}", err); + return } } } @@ -96,7 +101,13 @@ fn wait_for_fs_events(lock: Arc>, } WatchEventType::Changed => { let mut signal = lock.lock().unwrap(); - *signal = true; + match lock.lock() { + Ok(mut signal) => *signal = true, + Err(err) => { + println!("Unexpected error; {}", err); + return Ok(()) + } + } } } }