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
|
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 {
|
pub fn verify(&self, name: &str, secret: &str) -> bool {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ async fn post_status(
|
||||||
Err(response) => return Ok(response),
|
Err(response) => return Ok(response),
|
||||||
};
|
};
|
||||||
|
|
||||||
let now = OffsetDateTime::now_utc();
|
|
||||||
let queue = sqlx::query_scalar!(
|
let queue = sqlx::query_scalar!(
|
||||||
"\
|
"\
|
||||||
SELECT hash FROM queue \
|
SELECT hash FROM queue \
|
||||||
|
|
@ -48,13 +47,13 @@ async fn post_status(
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let mut guard = runners.lock().unwrap();
|
let mut guard = runners.lock().unwrap();
|
||||||
guard.clean(now);
|
guard.clean();
|
||||||
if !guard.verify(&name, &request.secret) {
|
if !guard.verify(&name, &request.secret) {
|
||||||
return Ok((StatusCode::UNAUTHORIZED, "invalid secret").into_response());
|
return Ok((StatusCode::UNAUTHORIZED, "invalid secret").into_response());
|
||||||
}
|
}
|
||||||
guard.update(
|
guard.update(
|
||||||
name.clone(),
|
name.clone(),
|
||||||
RunnerInfo::new(request.secret, now, request.status),
|
RunnerInfo::new(request.secret, OffsetDateTime::now_utc(), request.status),
|
||||||
);
|
);
|
||||||
let work = match request.request_work {
|
let work = match request.request_work {
|
||||||
true => guard.find_free_work(&queue),
|
true => guard.find_free_work(&queue),
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@ use sqlx::SqlitePool;
|
||||||
|
|
||||||
use crate::{config::Config, server::util, somehow};
|
use crate::{config::Config, server::util, somehow};
|
||||||
|
|
||||||
use super::{Base, Tab, link::CommitLink};
|
use super::{link::CommitLink, Base, Tab};
|
||||||
|
|
||||||
|
|
||||||
#[derive(Template)]
|
#[derive(Template)]
|
||||||
#[template(path = "commit.html")]
|
#[template(path = "commit.html")]
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ fn sorted_runners(runners: &Mutex<Runners>) -> Vec<(String, RunnerInfo)> {
|
||||||
let mut runners = runners
|
let mut runners = runners
|
||||||
.lock()
|
.lock()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
.clean()
|
||||||
.get_all()
|
.get_all()
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,8 @@ pub async fn get(
|
||||||
State(config): State<&'static Config>,
|
State(config): State<&'static Config>,
|
||||||
State(runners): State<Arc<Mutex<Runners>>>,
|
State(runners): State<Arc<Mutex<Runners>>>,
|
||||||
) -> somehow::Result<Response> {
|
) -> 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());
|
return Ok(StatusCode::NOT_FOUND.into_response());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue