aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-11-05 18:49:11 +0000
committerChristopher Baines <mail@cbaines.net>2023-11-05 18:49:11 +0000
commit341eb4a2838ff1d39601f22badcb99a19acbab0c (patch)
treedd265a86898e1b01181b15746a9c2f1d9be0f775
parentb026b8795b0c55a4a51a7606922a271dfbe637a9 (diff)
downloaddata-service-341eb4a2838ff1d39601f22badcb99a19acbab0c.tar
data-service-341eb4a2838ff1d39601f22badcb99a19acbab0c.tar.gz
Handle eof when reading logs
-rw-r--r--guix-data-service/jobs.scm43
1 files changed, 23 insertions, 20 deletions
diff --git a/guix-data-service/jobs.scm b/guix-data-service/jobs.scm
index 9bac5e1..f848f2e 100644
--- a/guix-data-service/jobs.scm
+++ b/guix-data-service/jobs.scm
@@ -72,33 +72,36 @@ VALUES (nextval('" (log-part-sequence-name job_id) "'), $1, $2)")
(list job-id))
(let loop ((line (get-line port-to-read-from)))
- (let ((line-with-newline
- (string-append line "\n")))
- (catch #t
- (lambda ()
- (insert logging-conn job-id line-with-newline)
- (display line-with-newline))
- (lambda (key . args)
- (display
- (simple-format
- #f
- "
-error: ~A: ~A
-error: could not insert log part: '~A'\n\n"
- key args line))
+ (if (eof-object? line)
+ (simple-format #t "finished reading logs for ~A\n"
+ job-id)
+ (let ((line-with-newline
+ (string-append line "\n")))
(catch #t
(lambda ()
- (insert
- logging-conn
- job-id
+ (insert logging-conn job-id line-with-newline)
+ (display line-with-newline))
+ (lambda (key . args)
+ (display
(simple-format
#f
"
+error: ~A: ~A
+error: could not insert log part: '~A'\n\n"
+ key args line))
+ (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)))))))
+ (lambda _
+ #t))))
+ (loop (get-line port-to-read-from)))))))))
port-to-write-to)))