From 0cc78b90aec0ccdd8740092a465753cc71bca704 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 24 Apr 2020 08:59:32 +0100 Subject: [PATCH] Support setting a statement timeout To stop queries related to the web server that run for a long time. --- guix-data-service/database.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/guix-data-service/database.scm b/guix-data-service/database.scm index 455ce82..df4daac 100644 --- a/guix-data-service/database.scm +++ b/guix-data-service/database.scm @@ -34,7 +34,7 @@ (define pg-conn-finish (@@ (squee) pg-conn-finish)) -(define* (with-postgresql-connection name f) +(define* (with-postgresql-connection name f #:key (statement-timeout #f)) (define paramstring (string-append (or (getenv "GUIX_DATA_SERVICE_DATABASE_PARAMSTRING") @@ -47,6 +47,11 @@ (let* ((conn (connect-to-postgres-paramstring (or (getenv "GUIX_DATA_SERVICE_DATABASE_URI") paramstring)))) + (when statement-timeout + (exec-query + conn + (simple-format #f "SET statement_timeout = ~A" + statement-timeout))) (with-throw-handler #t (lambda ()