Dont reepat healthcheck statuses

Only sends healthcheck statuses if they are different then the current value
This commit is contained in:
Joe Bellus 2022-02-15 10:19:13 -05:00
parent 04c2f37b60
commit 6d9d863039
2 changed files with 31 additions and 16 deletions

View File

@ -73,7 +73,6 @@ impl Handler<Event> for EventBroker {
type Result = (); type Result = ();
fn handle(&mut self, msg: Event, _ctx: &mut Self::Context) -> Self::Result { fn handle(&mut self, msg: Event, _ctx: &mut Self::Context) -> Self::Result {
tracing::info!("Event received");
for (_, ses) in self.sessions.iter() { for (_, ses) in self.sessions.iter() {
let _ = ses.addr.do_send(msg.clone()); let _ = ses.addr.do_send(msg.clone());
} }

View File

@ -99,6 +99,13 @@ async fn main() {
.await .await
{ {
Ok(res) if res.status() == 200 => { Ok(res) if res.status() == 200 => {
if !st
.healthcheck_status
.lock()
.await
.get(&app.id)
.unwrap_or(&false)
{
st.healthcheck_status.lock().await.insert(app.id, true); st.healthcheck_status.lock().await.insert(app.id, true);
let _ = events::EventBroker::from_registry() let _ = events::EventBroker::from_registry()
.send(events::Event::HealthcheckChange { .send(events::Event::HealthcheckChange {
@ -107,6 +114,7 @@ async fn main() {
}) })
.await; .await;
} }
}
Err(e) => { Err(e) => {
tracing::warn!("Error performing healthcheck: {}", e); tracing::warn!("Error performing healthcheck: {}", e);
st.healthcheck_status.lock().await.insert(app.id, false); st.healthcheck_status.lock().await.insert(app.id, false);
@ -118,6 +126,13 @@ async fn main() {
.await; .await;
} }
Ok(res) => { Ok(res) => {
if st
.healthcheck_status
.lock()
.await
.get(&app.id)
.unwrap_or(&true)
{
tracing::warn!("Non 200 status code: {}", res.status()); tracing::warn!("Non 200 status code: {}", res.status());
st.healthcheck_status.lock().await.insert(app.id, false); st.healthcheck_status.lock().await.insert(app.id, false);
let _ = events::EventBroker::from_registry() let _ = events::EventBroker::from_registry()
@ -129,6 +144,7 @@ async fn main() {
} }
} }
} }
}
tokio::time::sleep(tokio::time::Duration::from_secs(60)).await; tokio::time::sleep(tokio::time::Duration::from_secs(60)).await;
} }
}); });