From d5d30b17f678f6b0f7de45ba4fee2a5090b0ee8f Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 19 May 2020 18:49:31 +0100 Subject: Improve handling of submitting builds Don't always substitute the derivation, just fetch it if it doesn't exist in the database. Also just use the name of the derivation, only read it from the disk when it needs storing in the database. --- guix-build-coordinator/client-communication.scm | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'guix-build-coordinator/client-communication.scm') diff --git a/guix-build-coordinator/client-communication.scm b/guix-build-coordinator/client-communication.scm index 2360631..ae4a8c5 100644 --- a/guix-build-coordinator/client-communication.scm +++ b/guix-build-coordinator/client-communication.scm @@ -154,17 +154,23 @@ `((new-password . ,password))))) (('POST "builds") (let ((derivation-file (assoc-ref body "derivation"))) - (unless (file-exists? derivation-file) - (substitute-derivation derivation-file - #:substitute-urls - (vector->list - (assoc-ref body "substitute-urls")))) + (let ((derivation-database-entry + (datastore-find-derivation datastore derivation-file))) + (unless derivation-database-entry + (unless (file-exists? derivation-file) + (substitute-derivation derivation-file + #:substitute-urls + (vector->list + (assoc-ref body "substitute-urls")))) + (datastore-store-derivation + datastore + (read-derivation-from-file derivation-file)))) (let ((submit-build-result (apply submit-build `(,build-coordinator - ,(read-derivation-from-file derivation-file) + ,derivation-file ,@(let ((priority (assoc-ref body "priority"))) (if priority `(#:priority ,priority) -- cgit v1.2.3