diff options
author | Christopher Baines <mail@cbaines.net> | 2023-05-20 13:21:30 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2023-05-20 13:21:30 +0100 |
commit | 5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3 (patch) | |
tree | 13ee8c5bc249dfc3121ec309ac2b094f49ec42cb | |
parent | c2e9b993bc070ee24170f171beca0f40700a9417 (diff) | |
download | nar-herder-5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3.tar nar-herder-5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3.tar.gz |
Add exception handling to the recent change removal thread
-rw-r--r-- | nar-herder/recent-changes.scm | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/nar-herder/recent-changes.scm b/nar-herder/recent-changes.scm index c69bd77..14b729a 100644 --- a/nar-herder/recent-changes.scm +++ b/nar-herder/recent-changes.scm @@ -44,24 +44,32 @@ (call-with-new-thread (lambda () (while #t - (let ((recent-changes-id-for-deletion - (database-get-recent-changes-id-for-deletion database - recent-changes-limit))) - (when recent-changes-id-for-deletion - (when database-dump-filename - (update-database-dump)) + (with-exception-handler + (lambda (exn) + (simple-format + (current-error-port) + "exception in recent change removal thread: ~A\n" + exn)) + (lambda () + (let ((recent-changes-id-for-deletion + (database-get-recent-changes-id-for-deletion database + recent-changes-limit))) + (when recent-changes-id-for-deletion + (when database-dump-filename + (update-database-dump)) - (let ((deleted-recent-changes - (database-call-with-transaction - database - (lambda _ - (database-delete-recent-changes-with-id-below - database - recent-changes-id-for-deletion))))) - (simple-format (current-error-port) - "deleted ~A recent changes\n" - deleted-recent-changes))) + (let ((deleted-recent-changes + (database-call-with-transaction + database + (lambda _ + (database-delete-recent-changes-with-id-below + database + recent-changes-id-for-deletion))))) + (simple-format (current-error-port) + "deleted ~A recent changes\n" + deleted-recent-changes))) - (sleep check-interval)))))) + (sleep check-interval))) + #:unwind? #t))))) |