From de3ca9d07423b33cf7441df7374f798df3eb4c67 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 28 Nov 2020 19:36:47 +0000 Subject: [PATCH] Improve the parse-commit invalid parameter handling --- guix-data-service/web/compare/controller.scm | 34 ++++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/guix-data-service/web/compare/controller.scm b/guix-data-service/web/compare/controller.scm index 17da52c..b970904 100644 --- a/guix-data-service/web/compare/controller.scm +++ b/guix-data-service/web/compare/controller.scm @@ -53,13 +53,33 @@ s) (define (parse-commit s) - (if (parallel-via-thread-pool-channel - (with-thread-postgresql-connection - (lambda (conn) - (guix-commit-exists? conn s)))) - s - (make-invalid-query-parameter - s "unknown commit"))) + (parallel-via-thread-pool-channel + (with-thread-postgresql-connection + (lambda (conn) + (if (guix-commit-exists? conn s) + s + (let* ((job-details + (select-job-for-commit conn s)) + (job-state + (assq-ref job-details 'state))) + (if job-details + (make-invalid-query-parameter + s + (cond + ((string=? job-state "queued") + `("data unavailable, " + (a (@ (href ,(string-append + "/revision/" s))) + "yet to process revision"))) + ((string=? job-state "failed") + `("data unavailable, " + (a (@ (href ,(string-append + "/revision/" s))) + "failed to process revision"))) + (else + "unknown job state"))) + (make-invalid-query-parameter + s "unknown commit")))))))) (define (parse-derivation file-name) (if (parallel-via-thread-pool-channel