From e9d4a770d3c2b4e58f99a8dab7a3ce236ae68594 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Fri, 31 Jul 2020 14:40:37 -0400 Subject: [PATCH] Revert "No nursery for render thread" This reverts commit 59da2337bd8076b147e4eb76f7ad82d17ac0c8c2. --- src/main.rs | 61 +++++++++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/main.rs b/src/main.rs index daa58cf..e2f28d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -216,35 +216,42 @@ fn main() -> anyhow::Result<()> { }); parent.schedule(Box::new(connect_thread)); } - debug!("attempting to start server on {}", LISTENHOST.flag); - let server = match tiny_http::Server::http(LISTENHOST.flag) { - Ok(server) => server, - Err(err) => { - let mut signal = stop_signal.write().unwrap(); - *signal = true; - error!("Error starting render thread {}", err); - error!("Shutting down all threads..."); - return Err(anyhow::Error::msg(format!("{}", err))); - } - }; - loop { - info!("Waiting for request"); - match server.recv() { - Ok(req) => { - let mut buffer = vec![]; - // Gather the metrics. - let encoder = TextEncoder::new(); - let metric_families = r.gather(); - encoder.encode(&metric_families, &mut buffer).unwrap(); + let stop_signal = stop_signal.clone(); + let render_thread = thread::Pending::new(move || { + debug!("attempting to start server on {}", LISTENHOST.flag); + let server = match tiny_http::Server::http(LISTENHOST.flag) { + Ok(server) => server, + Err(err) => { + let mut signal = stop_signal.write().unwrap(); + *signal = true; + error!("Error starting render thread {}", err); + error!("Shutting down all threads..."); + return; + } + }; + loop { + info!("Waiting for request"); + match server.recv() { + Ok(req) => { + let mut buffer = vec![]; + // Gather the metrics. + let encoder = TextEncoder::new(); + let metric_families = r.gather(); + encoder.encode(&metric_families, &mut buffer).unwrap(); - let response = tiny_http::Response::from_data(buffer).with_status_code(200); - if let Err(e) = req.respond(response) { - info!("Error responding to request {}", e); + let response = tiny_http::Response::from_data(buffer).with_status_code(200); + if let Err(e) = req.respond(response) { + info!("Error responding to request {}", e); + } + } + Err(e) => { + info!("Invalid http request! {}", e); } } - Err(e) => { - info!("Invalid http request! {}", e); - } } - } + }); + parent.schedule(Box::new(render_thread)); + // Blocks forever + parent.wait(); + Ok(()) }