diff options
author | Christopher Baines <mail@cbaines.net> | 2020-04-30 19:28:14 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-04-30 19:28:14 +0100 |
commit | 3087c9e6fa7d42ffb34132eb3b78d6815be13ac5 (patch) | |
tree | fd267b1a8af68bfe1c71a176fd175f8ae1a4fb01 /guix-build-coordinator/datastore/sqlite.scm | |
parent | 6bc76b57d4121cc11b7f4324d347b84b36ecd6bf (diff) | |
download | build-coordinator-3087c9e6fa7d42ffb34132eb3b78d6815be13ac5.tar build-coordinator-3087c9e6fa7d42ffb34132eb3b78d6815be13ac5.tar.gz |
Improve the sqlite exception handling
Use #:unwind? #t in more cases.
Diffstat (limited to 'guix-build-coordinator/datastore/sqlite.scm')
-rw-r--r-- | guix-build-coordinator/datastore/sqlite.scm | 60 |
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 |