Skip to content

Commit 4593916

Browse files
committed
Remove benchmark request and jobs when an artifact is purged
1 parent edb9c07 commit 4593916

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

database/src/pool.rs

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ impl Pool {
439439
mod tests {
440440
use super::*;
441441
use crate::metric::Metric;
442-
use crate::tests::builder::{job, RequestBuilder};
442+
use crate::tests::builder::{job, CollectorBuilder, RequestBuilder};
443443
use crate::tests::run_postgres_test;
444444
use crate::{tests::run_db_test, BenchmarkRequestType, Commit, CommitType, Date};
445445
use chrono::Utc;
@@ -1222,4 +1222,45 @@ mod tests {
12221222
})
12231223
.await;
12241224
}
1225+
1226+
#[tokio::test]
1227+
async fn purge_artifact() {
1228+
run_postgres_test(|ctx| async {
1229+
let db = ctx.db();
1230+
1231+
ctx.upsert_master_artifact("foo").await;
1232+
ctx.insert_master_request("foo", "bar", 1).await;
1233+
db.enqueue_benchmark_job(
1234+
"foo",
1235+
Target::X86_64UnknownLinuxGnu,
1236+
CodegenBackend::Llvm,
1237+
Profile::Check,
1238+
0,
1239+
)
1240+
.await
1241+
.unwrap()
1242+
.unwrap();
1243+
db.purge_artifact(&ArtifactId::Tag("foo".to_string())).await;
1244+
1245+
assert!(!db
1246+
.load_benchmark_request_index()
1247+
.await
1248+
.unwrap()
1249+
.contains_tag("foo"));
1250+
1251+
let collector = ctx.add_collector(CollectorBuilder::default()).await;
1252+
assert!(db
1253+
.dequeue_benchmark_job(
1254+
collector.name(),
1255+
collector.target(),
1256+
collector.benchmark_set(),
1257+
)
1258+
.await
1259+
.unwrap()
1260+
.is_none());
1261+
1262+
Ok(ctx)
1263+
})
1264+
.await;
1265+
}
12251266
}

database/src/pool/postgres.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,12 +1582,19 @@ where
15821582
// thanks to ON DELETE CASCADE.
15831583
let info = aid.info();
15841584
self.conn()
1585-
.execute("delete from artifact where name = $1", &[&info.name])
1585+
.execute("DELETE FROM artifact WHERE name = $1", &[&info.name])
15861586
.await
15871587
.unwrap();
15881588
self.conn()
15891589
.execute(
1590-
"delete from pull_request_build where bors_sha = $1",
1590+
"DELETE FROM pull_request_build WHERE bors_sha = $1",
1591+
&[&info.name],
1592+
)
1593+
.await
1594+
.unwrap();
1595+
self.conn()
1596+
.execute(
1597+
"DELETE FROM benchmark_request WHERE tag = $1",
15911598
&[&info.name],
15921599
)
15931600
.await

0 commit comments

Comments
 (0)