aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-07-13 18:55:50 +0100
committerChristopher Baines <mail@cbaines.net>2020-07-13 18:55:50 +0100
commita1af644310bcd550a00851b442c0727f5d30c9a7 (patch)
tree0cd486eb8a80f635d92ce850efd32d7c14d286a1
parent745a8bdbf13c83822db4ed9db18fadbef2bc3b4c (diff)
downloaddata-service-a1af644310bcd550a00851b442c0727f5d30c9a7.tar
data-service-a1af644310bcd550a00851b442c0727f5d30c9a7.tar.gz
Change select-required-builds-that-failed to exclude succeeded builds
Only include a failed build if that build server hasn't had any success building that output. The Guix Build Coordinator can build one output with many different builds, so this helps avoid showing lots of spurious failures.
-rw-r--r--guix-data-service/model/build.scm12
1 files changed, 11 insertions, 1 deletions
diff --git a/guix-data-service/model/build.scm b/guix-data-service/model/build.scm
index 686e08d..96a3ab8 100644
--- a/guix-data-service/model/build.scm
+++ b/guix-data-service/model/build.scm
@@ -371,7 +371,17 @@ LEFT OUTER JOIN (
ORDER BY build_id, id DESC
) AS latest_build_status
ON builds.id = latest_build_status.build_id
-WHERE latest_build_status.status = 'failed'")
+WHERE latest_build_status.status = 'failed'
+ AND NOT EXISTS (
+ SELECT 1
+ FROM builds AS successful_builds
+ INNER JOIN build_status AS successful_builds_build_status
+ ON successful_builds.id = successful_builds_build_status.build_id
+ WHERE successful_builds.derivation_output_details_set_id =
+ builds.derivation_output_details_set_id
+ AND successful_builds.build_server_id = $2
+ AND successful_builds_build_status.status = 'succeeded'
+ )")
(exec-query conn
query