aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-05-01 19:53:11 +0100
committerChristopher Baines <mail@cbaines.net>2020-05-01 19:53:11 +0100
commit5b6bf2ff8157a104dc144935d8fe0e68edc8288d (patch)
treed3b5d5d38d95ab2d04e847d39fb87cd6e68c3b01
parente27f5639f9d587c030f62593de20f2be5c94a35b (diff)
downloadbuild-coordinator-5b6bf2ff8157a104dc144935d8fe0e68edc8288d.tar
build-coordinator-5b6bf2ff8157a104dc144935d8fe0e68edc8288d.tar.gz
Add datastore-list-setup-failures-for-build
-rw-r--r--guix-build-coordinator/datastore.scm1
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm30
2 files changed, 31 insertions, 0 deletions
diff --git a/guix-build-coordinator/datastore.scm b/guix-build-coordinator/datastore.scm
index 32993a2..e270640 100644
--- a/guix-build-coordinator/datastore.scm
+++ b/guix-build-coordinator/datastore.scm
@@ -17,6 +17,7 @@
(re-export datastore-count-build-results)
(re-export datastore-store-build-result)
(re-export datastore-count-setup-failures)
+(re-export datastore-list-setup-failures-for-build)
(re-export datastore-fetch-setup-failures)
(re-export datastore-list-build-outputs)
(re-export datastore-list-related-derivations-with-no-build)
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 2f65f9f..9ca878b 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -25,6 +25,7 @@
datastore-list-agents
datastore-find-agent
datastore-count-setup-failures
+ datastore-list-setup-failures-for-build
datastore-fetch-setup-failures
datastore-store-setup-failure
datastore-store-setup-failure/missing-inputs
@@ -708,6 +709,35 @@ GROUP BY agent_id, failure_reason")))
result)))))
+(define-method (datastore-list-setup-failures-for-build
+ (datastore <sqlite-datastore>)
+ build-id)
+ (call-with-worker-thread
+ (slot-ref datastore 'worker-reader-thread-channel)
+ (lambda (db)
+ (let ((statement
+ (sqlite-prepare
+ db
+ "
+SELECT id, agent_id, failure_reason
+FROM setup_failures
+WHERE build_id = :build_id")))
+
+ (sqlite-bind-arguments
+ statement
+ #:build_id build-id)
+
+ (let ((result (sqlite-map
+ (match-lambda
+ (#(id agent-id failure-reason)
+ `((id . ,id)
+ (agent-id . ,agent-id)
+ (failure-reason . ,failure-reason))))
+ statement)))
+ (sqlite-reset statement)
+
+ result)))))
+
(define-method (datastore-fetch-setup-failures
(datastore <sqlite-datastore>))
(call-with-worker-thread