From da8586f62d46c72ec55479ef01587eabe434f32a Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 9 Oct 2020 19:28:06 +0100 Subject: [PATCH] Guard against errors when recording job stderr output This might help at least handle errors when inserting data in to PostgreSQL. --- .../jobs/load-new-guix-revision.scm | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm index 1a29add..de9d4a8 100644 --- a/guix-data-service/jobs/load-new-guix-revision.scm +++ b/guix-data-service/jobs/load-new-guix-revision.scm @@ -173,9 +173,32 @@ VALUES (nextval('" (log-part-sequence-name job_id) "'), $1, $2)") (let loop ((line (get-line port-to-read-from))) (let ((line-with-newline (string-append line "\n"))) - (insert logging-conn job-id line-with-newline) - (display line-with-newline real-output-port)) - (loop (get-line port-to-read-from)))))))3 + (catch #t + (lambda () + (insert logging-conn job-id line-with-newline) + (display line-with-newline real-output-port)) + (lambda (key . args) + (display + (simple-format + #f + " +error: ~A: ~A +error: could not insert log part: '~A'\n\n" + key args line) + real-output-port) + (catch #t + (lambda () + (insert + logging-conn + job-id + (simple-format + #f + " +guix-data-service: error: missing log line: ~A +\n" key))) + (lambda () + #t))))) + (loop (get-line port-to-read-from))))))) port-to-write-to)))