aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/client-communication.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator/client-communication.scm')
-rw-r--r--guix-build-coordinator/client-communication.scm43
1 files changed, 28 insertions, 15 deletions
diff --git a/guix-build-coordinator/client-communication.scm b/guix-build-coordinator/client-communication.scm
index 80d8c96..3d780c4 100644
--- a/guix-build-coordinator/client-communication.scm
+++ b/guix-build-coordinator/client-communication.scm
@@ -151,7 +151,8 @@
(alist-delete
'end-time
build-details))
- ,@(if (assq-ref build-details 'processed)
+ ,@(if (or (assq-ref build-details 'processed)
+ (assq-ref build-details 'canceled))
'()
(datastore-find-unprocessed-build-entry datastore uuid))
(created-at . ,(or (and=>
@@ -291,8 +292,8 @@
(render-json
`((build_allocation_plan
. ,(list->vector
- (datastore-list-allocation-plan-builds
- datastore
+ (build-coordinator-list-allocation-plan-builds
+ build-coordinator
agent-id)))))))
(('POST "agent" agent-id "passwords")
(let ((password (new-agent-password
@@ -460,9 +461,24 @@
(simple-format #f "derivation must be a string: ~A\n"
derivation))))
+ (unless (derivation-path? derivation-file)
+ (raise-exception
+ (make-exception-with-message
+ "invalid derivation path")))
+
+ (string-for-each
+ (lambda (c)
+ (unless (or (char-alphabetic? c)
+ (char-numeric? c)
+ (member c '(#\+ #\- #\. #\_ #\? #\=)))
+ (raise-exception
+ (make-exception-with-message
+ (simple-format #f "invalid character in derivation name: ~A"
+ c)))))
+ (store-path-base derivation-file))
+
(define (read-drv/substitute derivation-file)
- (with-store store
- (ensure-non-blocking-store-connection store)
+ (with-store/non-blocking store
(unless (valid-path? store derivation-file)
(substitute-derivation store
derivation-file
@@ -484,17 +500,15 @@
'WARN
"exception substituting derivation " derivation-file
": " exn)
-
- (if (null? (or substitute-urls '()))
- ;; Try again
- (read-drv/substitute derivation-file)
- (read-derivation-through-substitutes
- derivation-file
- substitute-urls)))
+ (raise-exception exn))
(lambda ()
(with-throw-handler #t
(lambda ()
- (read-drv/substitute derivation-file))
+ (retry-on-error
+ (lambda ()
+ (read-drv/substitute derivation-file))
+ #:times 5
+ #:delay 5))
(lambda args
(backtrace))))
#:unwind? #t))
@@ -535,8 +549,7 @@
datastore
(lambda (_)
(let ((allocation-plan-counts
- (datastore-count-build-allocation-plan-entries
- datastore)))
+ (build-coordinator-allocation-plan-stats build-coordinator)))
`((state_id . ,(build-coordinator-get-state-id build-coordinator))
(agents . ,(list->vector
(map