From cbe9859064dba04d592bdc810cf61b3e87b63b28 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 27 Dec 2020 10:27:21 +0000 Subject: [PATCH] Support inserting build statuses without a transaction In case this code is run as part of a bigger transaction. --- guix-data-service/model/build-status.scm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/guix-data-service/model/build-status.scm b/guix-data-service/model/build-status.scm index ec833b5..4a2a801 100644 --- a/guix-data-service/model/build-status.scm +++ b/guix-data-service/model/build-status.scm @@ -58,7 +58,8 @@ WHERE builds.build_server_id = $1 AND (list build-id) `((,timestamp ,status)))) -(define (insert-build-statuses conn build-ids data) +(define* (insert-build-statuses conn build-ids data + #:key (transaction? #t)) (define query (string-append " @@ -130,10 +131,13 @@ WINDOW rows_for_build AS ( (exec-query conn query)) - (with-postgresql-transaction - conn - (lambda (conn) - (exec-query conn query '()) + (define (operations conn) + (exec-query conn query '()) - (delete-old-latest-status-entries conn) - (insert-new-latest-status-entries conn)))) + (delete-old-latest-status-entries conn) + (insert-new-latest-status-entries conn)) + + (if transaction? + (with-postgresql-transaction conn + operations) + (operations conn)))