[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/07: services: postgresql: Don't initdb when directory exists.
From: |
guix-commits |
Subject: |
05/07: services: postgresql: Don't initdb when directory exists. |
Date: |
Fri, 29 Mar 2024 20:05:58 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit ed03a0aa9b353434bbd6dce47f1b82cbe6d14000
Author: Robert Vollmert <rob@vllmrt.net>
AuthorDate: Fri Mar 8 11:51:01 2024 +0000
services: postgresql: Don't initdb when directory exists.
* gnu/services/databases.scm (postgresql-activation): Check if
directory exists.
Reviewed-by: Dale Mellor <guix-devel-0brg6b@rdmp.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: Id563a3e8df2cb5b805e64cd8319303c65d308c69
---
gnu/services/databases.scm | 68 ++++++++++++++++++++++++----------------------
1 file changed, 35 insertions(+), 33 deletions(-)
diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm
index 580031cb42..cb85d18e21 100644
--- a/gnu/services/databases.scm
+++ b/gnu/services/databases.scm
@@ -235,20 +235,7 @@ host all all ::1/128 md5"))
(use-modules (guix build utils)
(ice-9 match))
- (let ((user (getpwnam "postgres"))
- (initdb (string-append
- #$(final-postgresql postgresql
- extension-packages)
- "/bin/initdb"))
- (initdb-args
- (append
- (if #$locale
- (list (string-append "--locale=" #$locale))
- '()))))
- ;; Create db state directory.
- (mkdir-p #$data-directory)
- (chown #$data-directory (passwd:uid user) (passwd:gid user))
-
+ (let ((user (getpwnam "postgres")))
;; Create the socket directory.
(let ((socket-directory
#$(postgresql-config-file-socket-directory config-file)))
@@ -261,25 +248,40 @@ host all all ::1/128 md5"))
(mkdir-p #$log-directory)
(chown #$log-directory (passwd:uid user) (passwd:gid user)))
- ;; Drop privileges and init state directory in a new
- ;; process. Wait for it to finish before proceeding.
- (match (primitive-fork)
- (0
- ;; Exit with a non-zero status code if an exception is thrown.
- (dynamic-wind
- (const #t)
- (lambda ()
- (setgid (passwd:gid user))
- (setuid (passwd:uid user))
- (primitive-exit
- (apply system*
- initdb
- "-D"
- #$data-directory
- initdb-args)))
- (lambda ()
- (primitive-exit 1))))
- (pid (waitpid pid))))))))
+ (unless (file-exists? #$data-directory)
+ (let ((initdb (string-append
+ #$(final-postgresql postgresql
+ extension-packages)
+ "/bin/initdb"))
+ (initdb-args
+ (append
+ (if #$locale
+ (list (string-append "--locale=" #$locale))
+ '()))))
+ ;; Create db state directory.
+ (mkdir-p #$data-directory)
+ (chown #$data-directory (passwd:uid user) (passwd:gid user))
+
+ ;; Drop privileges and init state directory in a new
+ ;; process. Wait for it to finish before proceeding.
+ (match (primitive-fork)
+ (0
+ ;; Exit with a non-zero status code if an exception is
+ ;; thrown.
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (setgid (passwd:gid user))
+ (setuid (passwd:uid user))
+ (primitive-exit
+ (apply system*
+ initdb
+ "-D"
+ #$data-directory
+ initdb-args)))
+ (lambda ()
+ (primitive-exit 1))))
+ (pid (waitpid pid))))))))))
(define postgresql-shepherd-service
(match-lambda
- branch master updated (9dae1488a4 -> 4b23fd7adb), guix-commits, 2024/03/29
- 03/07: doc: ‘guix time-machine’ can travel to v0.16.0., guix-commits, 2024/03/29
- 01/07: channels: Autoload several modules., guix-commits, 2024/03/29
- 04/07: doc: Cross-reference virtual build machines from ‘guix time-machine’., guix-commits, 2024/03/29
- 02/07: substitute: Retry nar download upon networking error., guix-commits, 2024/03/29
- 06/07: services: postgresql: Simplify execution of ‘initdb’., guix-commits, 2024/03/29
- 05/07: services: postgresql: Don't initdb when directory exists.,
guix-commits <=
- 07/07: gnu: gerbil: Update to 0.18.1., guix-commits, 2024/03/29