aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator
diff options
context:
space:
mode:
Diffstat (limited to 'guix-build-coordinator')
-rw-r--r--guix-build-coordinator/agent.scm28
1 files changed, 20 insertions, 8 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm
index 4e6d3df..221a6f2 100644
--- a/guix-build-coordinator/agent.scm
+++ b/guix-build-coordinator/agent.scm
@@ -62,14 +62,26 @@
(simple-format #t "setup successful, building: ~A\n"
derivation-name)
(let ((result (perform-build derivation-name)))
- (and=> (derivation-log-file derivation-name)
- (lambda (log-file)
- (simple-format #t "uploading log file ~A\n"
- log-file)
- (submit-log-file
- coordinator-uri uuid password
- (assoc-ref build "uuid")
- log-file)))
+ (retry-on-error
+ (lambda ()
+ (let ((log-file (derivation-log-file derivation-name)))
+ (unless log-file
+ (raise-exception
+ (make-exception-with-message
+ (simple-format
+ #f
+ "log file missing for ~A (~A)"
+ derivation-name
+ (assoc-ref build "uuid")))))
+
+ (simple-format #t "uploading log file ~A\n"
+ log-file)
+ (submit-log-file
+ coordinator-uri uuid password
+ (assoc-ref build "uuid")
+ log-file)))
+ #:times 6
+ #:delay 10)
((if result
post-build-success
post-build-failure)