Browse Source

apply Bill Campbell's pg_ctl workarounds and cleanup the pg_ctl handling in general, too

Ralf S. Engelschall 20 years ago
parent
commit
0f65c71fcb
2 changed files with 26 additions and 9 deletions
  1. 1 1
      postgresql/postgresql.spec
  2. 25 8
      postgresql/rc.postgresql

+ 1 - 1
postgresql/postgresql.spec

@@ -44,7 +44,7 @@ Class:        BASE
 Group:        Database
 License:      GPL
 Version:      %{V_postgresql}
-Release:      20051105
+Release:      20051112
 
 #   package options
 %option       with_server    yes

+ 25 - 8
postgresql/rc.postgresql

@@ -7,6 +7,7 @@
     postgresql_enable="$openpkg_rc_def"
     postgresql_flags=""
     postgresql_datadir="@l_prefix@/var/postgresql/db"
+    postgresql_rundir="@l_prefix@/var/postgresql/run"
     postgresql_shut_mode="smart"
     postgresql_socket_inet="127.0.0.1"
     postgresql_socket_unix="@l_prefix@/var/postgresql/run/"
@@ -20,8 +21,9 @@
 %common
     postgresql_opts="-h $postgresql_socket_inet -k $postgresql_socket_unix"
     postgresql_opts="$postgresql_opts $postgresql_flags"
-    postgresql_log_file="@l_prefix@/var/postgresql/run/postgresql.log"
-    postgresql_slony1_pidfile="@l_prefix@/var/postgresql/run/slon.pid"
+    postgresql_logfile="$postgresql_rundir/postgresql.log"
+    postgresql_pidfile="$postgresql_datadir/postgresql.pid"
+    postgresql_slony1_pidfile="$postgresql_rundir/slon.pid"
     postgresql_slony1_start () {
         ( . @l_prefix@/etc/postgresql/slony1.conf
           nohup @l_prefix@/bin/slon \
@@ -40,12 +42,27 @@
             rm -f $postgresql_slony1_pidfile
         fi
     }
+    postgresql_ctl () {
+        if [ -s $postgresql_pidfile ]; then
+            kill -0 `head -1 $postgresql_pidfile` >/dev/null 2>&1
+            if [ $? -ne 0 ]; then
+                rm -f $postgresql_pidfile    >/dev/null 2>&1 || true
+                rm -f $postgresql_rundir/.s* >/dev/null 2>&1 || true
+            fi
+        fi
+        cmd="$1"; shift
+        @l_prefix@/bin/pg_ctl $cmd \
+            -l $postgresql_logfile \
+            -D $postgresql_datadir \
+            ${1+"$@"}
+    }
 
 %status -u @l_rusr@ -o
     postgresql_usable="unknown"
     postgresql_active="no"
     rcService postgresql enable yes && \
-        @l_prefix@/bin/pg_ctl status -D $postgresql_datadir >/dev/null && postgresql_active="yes"
+        postgresql_ctl status >/dev/null && \
+        postgresql_active="yes"
     echo "postgresql_enable=\"$postgresql_enable\""
     echo "postgresql_usable=\"$postgresql_usable\""
     echo "postgresql_active=\"$postgresql_active\""
@@ -53,7 +70,7 @@
 %start -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active yes && exit 0
-    @l_prefix@/bin/pg_ctl start -l $postgresql_log_file -D $postgresql_datadir -o "$postgresql_opts"
+    postgresql_ctl start -o "$postgresql_opts"
     if rcVarIsYes postgresql_slony1; then
         postgresql_slony1_start
     fi
@@ -61,7 +78,7 @@
 %stop -p 600 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active no  && exit 0
-    @l_prefix@/bin/pg_ctl stop -l $postgresql_log_file -D $postgresql_datadir -m $postgresql_shut_mode
+    postgresql_ctl stop -m "$postgresql_shut_mode"
     if rcVarIsYes postgresql_slony1; then
         postgresql_slony1_stop
     fi
@@ -69,7 +86,7 @@
 %restart -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active no  && exit 0
-    @l_prefix@/bin/pg_ctl restart -l $postgresql_log_file -D $postgresql_datadir -o "$postgresql_opts" -m $postgresql_shut_mode
+    postgresql_ctl restart -o "$postgresql_opts" -m "$postgresql_shut_mode"
     if rcVarIsYes postgresql_slony1; then
         postgresql_slony1_stop
         postgresql_slony1_start
@@ -78,7 +95,7 @@
 %reload -p 400 -u @l_rusr@
     rcService postgresql enable yes || exit 0
     rcService postgresql active no  && exit 0
-    @l_prefix@/bin/pg_ctl reload -D $postgresql_datadir
+    postgresql_ctl reload
 
 %daily -u @l_rusr@
     rcService postgresql enable yes || exit 0
@@ -87,5 +104,5 @@
         -z ${postgresql_log_complevel} -m 600 -o @l_rusr@ -g @l_rgrp@ \
         -P "$postgresql_log_prolog" \
         -E "$postgresql_log_epilog" \
-        $postgresql_log_file
+        $postgresql_logfile