From b16b3a668eaddfa409706520fb7511320fdf230b Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 10 Aug 2023 23:35:20 +0200 Subject: [PATCH] Fix runners not disappearing --- src/server/runners.rs | 6 ++++-- src/server/web/api.rs | 5 ++--- src/server/web/commit.rs | 3 +-- src/server/web/queue.rs | 1 + src/server/web/runner.rs | 3 ++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/server/runners.rs b/src/server/runners.rs index 29f1988..6b1857e 100644 --- a/src/server/runners.rs +++ b/src/server/runners.rs @@ -35,9 +35,11 @@ impl Runners { } } - pub fn clean(&mut self, now: OffsetDateTime) { + pub fn clean(&mut self) -> &mut Self { + let now = OffsetDateTime::now_utc(); self.runners - .retain(|_, v| now <= v.last_seen + self.config.web_runner_timeout) + .retain(|_, v| now <= v.last_seen + self.config.web_runner_timeout); + self } pub fn verify(&self, name: &str, secret: &str) -> bool { diff --git a/src/server/web/api.rs b/src/server/web/api.rs index 4c17ed5..918ff82 100644 --- a/src/server/web/api.rs +++ b/src/server/web/api.rs @@ -37,7 +37,6 @@ async fn post_status( Err(response) => return Ok(response), }; - let now = OffsetDateTime::now_utc(); let queue = sqlx::query_scalar!( "\ SELECT hash FROM queue \ @@ -48,13 +47,13 @@ async fn post_status( .await?; let mut guard = runners.lock().unwrap(); - guard.clean(now); + guard.clean(); if !guard.verify(&name, &request.secret) { return Ok((StatusCode::UNAUTHORIZED, "invalid secret").into_response()); } guard.update( name.clone(), - RunnerInfo::new(request.secret, now, request.status), + RunnerInfo::new(request.secret, OffsetDateTime::now_utc(), request.status), ); let work = match request.request_work { true => guard.find_free_work(&queue), diff --git a/src/server/web/commit.rs b/src/server/web/commit.rs index 5cf0435..d7221d4 100644 --- a/src/server/web/commit.rs +++ b/src/server/web/commit.rs @@ -9,8 +9,7 @@ use sqlx::SqlitePool; use crate::{config::Config, server::util, somehow}; -use super::{Base, Tab, link::CommitLink}; - +use super::{link::CommitLink, Base, Tab}; #[derive(Template)] #[template(path = "commit.html")] diff --git a/src/server/web/queue.rs b/src/server/web/queue.rs index 96b8677..cef6b06 100644 --- a/src/server/web/queue.rs +++ b/src/server/web/queue.rs @@ -46,6 +46,7 @@ fn sorted_runners(runners: &Mutex) -> Vec<(String, RunnerInfo)> { let mut runners = runners .lock() .unwrap() + .clean() .get_all() .into_iter() .collect::>(); diff --git a/src/server/web/runner.rs b/src/server/web/runner.rs index 912774f..b8ccdda 100644 --- a/src/server/web/runner.rs +++ b/src/server/web/runner.rs @@ -29,7 +29,8 @@ pub async fn get( State(config): State<&'static Config>, State(runners): State>>, ) -> somehow::Result { - let Some(info) = runners.lock().unwrap().get(&name) else { + let info = runners.lock().unwrap().clean().get(&name); + let Some(info) = info else { return Ok(StatusCode::NOT_FOUND.into_response()); };