diff options
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 27 |
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))))) |