Add exception handling for processing background jobs

This commit is contained in:
Christopher Baines 2025-06-28 18:25:53 +02:00
parent 47ac73e5a7
commit 42711310fd

View file

@ -248,37 +248,50 @@ port. Also, the port used can be changed by passing the --port option.\n"
(while (not (check-startup-completed startup-completed))
(sleep 1))
(call-with-resource-from-pool (background-connection-pool)
(lambda (conn)
(let ((build-ids
(select-background-processing-build-ids conn)))
(unless (null? build-ids)
(simple-format #t "processing ~A builds from the background queue\n"
(length build-ids)))
(for-each
(lambda (build-id)
(let ((status (select-latest-build-status-by-build-id
conn
build-id)))
(cond
((string=? status "succeeded")
(handle-removing-blocking-build-entries-for-successful-builds
conn
(list build-id)))
((string=? status "scheduled")
(handle-blocked-builds-entries-for-scheduled-builds
conn
(list build-id)))
((member status '("failed"
"failed-dependency"
"canceled"))
(handle-populating-blocked-builds-for-build-failures
conn
(list build-id)))))
(delete-background-processing-entries-for-build-ids
conn
build-id))
build-ids)))))
(with-exception-handler
(lambda _ #f)
(lambda ()
(with-exception-handler
(lambda (exn)
(simple-format
#t
"exception when processing the background jobs queue")
(print-backtrace-and-exception/knots
exn)
(raise-exception exn))
(lambda ()
(call-with-resource-from-pool (background-connection-pool)
(lambda (conn)
(let ((build-ids
(select-background-processing-build-ids conn)))
(unless (null? build-ids)
(simple-format #t "processing ~A builds from the background queue\n"
(length build-ids)))
(for-each
(lambda (build-id)
(let ((status (select-latest-build-status-by-build-id
conn
build-id)))
(cond
((string=? status "succeeded")
(handle-removing-blocking-build-entries-for-successful-builds
conn
(list build-id)))
((string=? status "scheduled")
(handle-blocked-builds-entries-for-scheduled-builds
conn
(list build-id)))
((member status '("failed"
"failed-dependency"
"canceled"))
(handle-populating-blocked-builds-for-build-failures
conn
(list build-id)))))
(delete-background-processing-entries-for-build-ids
conn
build-id))
build-ids)))))))
#:unwind? #t))
#:parallel? #t)
(spawn-fiber