aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-05-20 13:21:30 +0100
committerChristopher Baines <mail@cbaines.net>2023-05-20 13:21:30 +0100
commit5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3 (patch)
tree13ee8c5bc249dfc3121ec309ac2b094f49ec42cb
parentc2e9b993bc070ee24170f171beca0f40700a9417 (diff)
downloadnar-herder-5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3.tar
nar-herder-5fc03d5d5d1fb0f708c84459dcc8e0b5ef13d2c3.tar.gz
Add exception handling to the recent change removal thread
-rw-r--r--nar-herder/recent-changes.scm42
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)))))