Fix runners not disappearing
This commit is contained in:
parent
2079d0b12d
commit
b16b3a668e
5 changed files with 10 additions and 8 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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")]
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ fn sorted_runners(runners: &Mutex<Runners>) -> Vec<(String, RunnerInfo)> {
|
|||
let mut runners = runners
|
||||
.lock()
|
||||
.unwrap()
|
||||
.clean()
|
||||
.get_all()
|
||||
.into_iter()
|
||||
.collect::<Vec<_>>();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ pub async fn get(
|
|||
State(config): State<&'static Config>,
|
||||
State(runners): State<Arc<Mutex<Runners>>>,
|
||||
) -> somehow::Result<Response> {
|
||||
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());
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue