diff options
Diffstat (limited to 'guix-build-coordinator/coordinator.scm')
-rw-r--r-- | guix-build-coordinator/coordinator.scm | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm index 62d181b..bc742cf 100644 --- a/guix-build-coordinator/coordinator.scm +++ b/guix-build-coordinator/coordinator.scm @@ -42,7 +42,10 @@ #:use-module (guix-build-coordinator build-allocator) #:use-module (guix-build-coordinator agent-messaging http server) #:use-module (guix-build-coordinator client-communication) - #:export (make-build-coordinator + #:export (agent-error? + agent-error-details + + make-build-coordinator build-coordinator-datastore build-coordinator-hooks build-coordinator-metrics-registry @@ -68,6 +71,11 @@ handle-build-result handle-setup-failure-report)) +(define-exception-type &agent-error &error + make-agent-error + agent-error? + (details agent-error-details)) + (define-record-type <build-coordinator> (make-build-coordinator-record datastore hooks metrics-registry allocation-strategy) @@ -527,12 +535,12 @@ (let ((build-details (datastore-find-build datastore build-id))) (when (assq-ref build-details 'processed) (raise-exception - (make-exception-with-message "build already processed")))) + (make-agent-error 'build_already_processed)))) (when success? (unless (build-log-file-location build-id) (raise-exception - (make-exception-with-message "missing build log file"))) + (make-agent-error 'missing_build_log_file))) (for-each (lambda (output) @@ -541,9 +549,8 @@ (assq-ref output 'name)))) (unless (file-exists? output-location) (raise-exception - (make-exception-with-message - (simple-format #f "missing output ~A" - (assq-ref output 'name))))))) + (make-agent-error + `((missing_output . ,(assq-ref output 'name)))))))) (datastore-list-build-outputs datastore build-id))) (datastore-store-build-result datastore |