aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/datastore/sqlite.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm27
1 files changed, 19 insertions, 8 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index db9f807..a5c50e4 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -490,7 +490,8 @@ SELECT agent_id, result, COUNT(*) FROM build_results GROUP BY agent_id, result")
agent-id
result
failure-reason
- output-metadata)
+ output-metadata
+ end-time)
(define (insert-build-result db build-id agent-id result failure-reason)
(sqlite-exec
db
@@ -518,12 +519,17 @@ DELETE FROM allocated_builds WHERE build_id = '"
agent-id
"'")))
- (define (mark-build-as-processed db build-id)
+ (define (mark-build-as-processed db build-id end-time)
(sqlite-exec
db
(string-append
"
-UPDATE builds SET processed = 1 WHERE uuid = '" build-id "'")))
+UPDATE builds
+SET processed = 1 "
+ (if end-time
+ (string-append ", end_time = '" end-time "'")
+ "") "
+WHERE uuid = '" build-id "'")))
(define (store-output-metadata
db
@@ -586,7 +592,7 @@ VALUES "
(lambda (db)
(insert-build-result db build-id agent-id result failure-reason)
(remove-build-allocation db build-id agent-id)
- (mark-build-as-processed db build-id)
+ (mark-build-as-processed db build-id end-time)
;; This logic should be part of the coordinator, but it's here to be
;; inside the transaction
(handle-inserting-unprocessed-hook-event db build-id result)
@@ -789,7 +795,7 @@ GROUP BY derivations.system")))
(sqlite-prepare
db
"
-SELECT uuid, derivation_name, priority, processed, created_at
+SELECT uuid, derivation_name, priority, processed, created_at, end_time
FROM builds
WHERE uuid = :uuid")))
@@ -799,7 +805,7 @@ WHERE uuid = :uuid")))
(let ((result
(match (sqlite-step statement)
- (#(uuid derivation_name priority processed created_at)
+ (#(uuid derivation_name priority processed created_at end_time)
`((uuid . ,uuid)
(derivation-name . ,derivation_name)
(priority . ,priority)
@@ -810,7 +816,11 @@ WHERE uuid = :uuid")))
(error "unknown processed value"))))
(created-at . ,(if (string? created_at)
(match (strptime "%F %T" created_at)
- ((parts _) parts))
+ ((parts . _) parts))
+ #f))
+ (end-time . ,(if (string? end_time)
+ (match (strptime "%F %T" end_time)
+ ((parts . _) parts))
#f)))))))
(sqlite-reset statement)
@@ -839,7 +849,8 @@ WHERE build_id = :build_id")))
(#(agent_id result failure_reason)
`((agent_id . ,agent_id)
(result . ,result)
- (failure_reason . ,failure_reason))))))
+ (failure_reason . ,failure_reason)))
+ (#f #f))))
(sqlite-reset statement)
result)))))