aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-04-30 19:28:14 +0100
committerChristopher Baines <mail@cbaines.net>2020-04-30 19:28:14 +0100
commit3087c9e6fa7d42ffb34132eb3b78d6815be13ac5 (patch)
treefd267b1a8af68bfe1c71a176fd175f8ae1a4fb01
parent6bc76b57d4121cc11b7f4324d347b84b36ecd6bf (diff)
downloadbuild-coordinator-3087c9e6fa7d42ffb34132eb3b78d6815be13ac5.tar
build-coordinator-3087c9e6fa7d42ffb34132eb3b78d6815be13ac5.tar.gz
Improve the sqlite exception handling
Use #:unwind? #t in more cases.
-rw-r--r--guix-build-coordinator/datastore/sqlite.scm60
1 files changed, 35 insertions, 25 deletions
diff --git a/guix-build-coordinator/datastore/sqlite.scm b/guix-build-coordinator/datastore/sqlite.scm
index 0183da1..fa82aa1 100644
--- a/guix-build-coordinator/datastore/sqlite.scm
+++ b/guix-build-coordinator/datastore/sqlite.scm
@@ -200,14 +200,16 @@ WHERE agent_id = :agent_id AND password = :password")))
(lambda (db)
(sqlite-exec db "BEGIN TRANSACTION;")
(with-exception-handler
- (lambda (key . args)
+ (lambda (exn)
(simple-format (current-error-port)
- "error: sqlite: ~A ~A\n"
- key args)
- (sqlite-exec db "ROLLBACK TRANSACTION;"))
+ "error: sqlite: ~A\n"
+ exn)
+ (sqlite-exec db "ROLLBACK TRANSACTION;")
+ (raise-exception exn))
(lambda ()
(insert-derivation-and-return-outputs db derivation)
- (sqlite-exec db "COMMIT TRANSACTION;")))))
+ (sqlite-exec db "COMMIT TRANSACTION;"))
+ #:unwind? #t)))
#t)
(define-method (datastore-list-related-derivations-with-no-build
@@ -257,14 +259,16 @@ WHERE name != :derivation
(lambda (db)
(sqlite-exec db "BEGIN TRANSACTION;")
(with-exception-handler
- (lambda (key . args)
+ (lambda (exn)
(simple-format (current-error-port)
- "error: sqlite: ~A ~A\n"
- key args)
- (sqlite-exec db "ROLLBACK TRANSACTION;"))
+ "error: sqlite: ~A\n"
+ exn)
+ (sqlite-exec db "ROLLBACK TRANSACTION;")
+ (raise-exception exn))
(lambda ()
(insert-build db uuid derivation-name priority)
- (sqlite-exec db "COMMIT TRANSACTION;")))))
+ (sqlite-exec db "COMMIT TRANSACTION;"))
+ #:unwind? #t)))
#t)
(define-method (datastore-count-build-results
@@ -452,11 +456,12 @@ INSERT INTO setup_failure_missing_inputs (
(lambda (db)
(sqlite-exec db "BEGIN TRANSACTION;")
(with-exception-handler
- (lambda (key . args)
+ (lambda (exn)
(simple-format (current-error-port)
- "error: sqlite: ~A ~A\n"
- key args)
- (sqlite-exec db "ROLLBACK TRANSACTION;"))
+ "error: sqlite: ~A\n"
+ exn)
+ (sqlite-exec db "ROLLBACK TRANSACTION;")
+ (raise-exception exn))
(lambda ()
(let ((setup-failure-id
(insert-setup-failure-and-remove-allocation db
@@ -464,7 +469,8 @@ INSERT INTO setup_failure_missing_inputs (
agent-id
"missing_inputs")))
(insert-missing-inputs db setup-failure-id missing-inputs))
- (sqlite-exec db "COMMIT TRANSACTION;")))))
+ (sqlite-exec db "COMMIT TRANSACTION;"))
+ #:unwind? #t)))
#t)
(define-method (datastore-list-setup-failure-missing-inputs
@@ -823,16 +829,18 @@ INSERT INTO build_allocation_plan (build_id, agent_id, ordering) VALUES "
(lambda (db)
(sqlite-exec db "BEGIN TRANSACTION;")
(with-exception-handler
- (lambda (key . args)
+ (lambda (exn)
(simple-format (current-error-port)
- "error: sqlite: ~A ~A\n"
- key args)
- (sqlite-exec db "ROLLBACK TRANSACTION;"))
+ "error: sqlite: ~A\n"
+ exn)
+ (sqlite-exec db "ROLLBACK TRANSACTION;")
+ (raise-exception exn))
(lambda ()
(clear-current-plan db)
(unless (null? planned-builds)
(insert-new-plan db planned-builds))
- (sqlite-exec db "COMMIT TRANSACTION;")))))))
+ (sqlite-exec db "COMMIT TRANSACTION;"))
+ #:unwind? #t)))))
#t)
(define-method (datastore-count-allocated-builds
@@ -896,15 +904,17 @@ WHERE build_id IN ("
(lambda (db)
(sqlite-exec db "BEGIN TRANSACTION;")
(with-exception-handler
- (lambda (key . args)
+ (lambda (exn)
(simple-format (current-error-port)
- "error: sqlite: ~A ~A\n"
- key args)
- (sqlite-exec db "ROLLBACK TRANSACTION;"))
+ "error: sqlite: ~A\n"
+ exn)
+ (sqlite-exec db "ROLLBACK TRANSACTION;")
+ (raise-exception exn))
(lambda ()
(insert-to-allocated-builds db agent-id build-ids)
(remove-builds-from-plan db build-ids)
- (sqlite-exec db "COMMIT TRANSACTION;")))))
+ (sqlite-exec db "COMMIT TRANSACTION;"))
+ #:unwind? #t)))
#t)
(define-method (datastore-list-allocation-plan-builds