diff options
-rw-r--r-- | guix-build-coordinator/utils.scm | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/guix-build-coordinator/utils.scm b/guix-build-coordinator/utils.scm index 5048d29..f12cab0 100644 --- a/guix-build-coordinator/utils.scm +++ b/guix-build-coordinator/utils.scm @@ -374,10 +374,20 @@ References: ~a~%" (canonical-sexp->string (signed-string info))))) (format #f "~aSignature: 1;~a;~a~%" info (gethostname) signature))) -(define* (retry-on-error f #:key times delay) +(define* (retry-on-error f #:key times delay ignore) (let loop ((attempt 1)) (match (with-exception-handler (lambda (exn) + (when (cond + ((list? ignore) + (any (lambda (test) + (test exn)) + ignore)) + ((procedure? ignore) + (ignore exn)) + (else #f)) + (raise-exception exn)) + (cons #f exn)) (lambda () (cons #t (f))) |