diff options
-rw-r--r-- | guix-qa-frontpage/guix-data-service.scm | 21 | ||||
-rw-r--r-- | guix-qa-frontpage/manage-builds.scm | 6 |
2 files changed, 26 insertions, 1 deletions
diff --git a/guix-qa-frontpage/guix-data-service.scm b/guix-qa-frontpage/guix-data-service.scm index d931c3f..422cabf 100644 --- a/guix-qa-frontpage/guix-data-service.scm +++ b/guix-qa-frontpage/guix-data-service.scm @@ -26,6 +26,8 @@ guix-data-service-error->sexp guix-data-service-error-summary + guix-data-service-error-sexp->error + guix-data-service-error-invalid-query? guix-data-service-request @@ -150,6 +152,25 @@ (else (simple-format #f "~A" (guix-data-service-error-response-body exn))))) +(define (guix-data-service-error-sexp->error sexp) + (make-guix-data-service-error + (if (eq? (assq-ref sexp 'exception) + 'guix-data-service-invalid-parameters) + `(("error" . "invalid-query") + ,@sexp) + sexp) + #f + #f)) + +(define (guix-data-service-error-invalid-query? exn) + (and + (guix-data-service-error? exn) + (string=? + (or (assoc-ref (guix-data-service-error-response-body exn) + "error") + "") + "invalid-query"))) + (define* (guix-data-service-request url #:key (retry-times 0) (retry-delay 5)) (define (make-request) (let ((port diff --git a/guix-qa-frontpage/manage-builds.scm b/guix-qa-frontpage/manage-builds.scm index 6039ef8..e55c27c 100644 --- a/guix-qa-frontpage/manage-builds.scm +++ b/guix-qa-frontpage/manage-builds.scm @@ -295,7 +295,11 @@ (lambda () (let ((data (branch-derivation-changes-data revisions system))) - (assoc-ref data "derivation_changes"))) + (if (assq-ref data 'exception) + (raise-exception + (guix-data-service-error-sexp->error data)) + (assoc-ref data "derivation_changes")))) + #:no-retry guix-data-service-error-invalid-query? #:times 2 #:delay 15)) %systems-to-submit-builds-for)) |