Package: postgresql-common
Version: 44
Severity: normal
Tags: patch
The init script currently does this:
Starting PostgreSQL 8.1 database server: main.
Starting PostgreSQL 8.1 database server: master.
Starting PostgreSQL 8.1 database server: slave.
It should, however, do this:
Starting PostgreSQL 8.1 database server: main master slave.
Additionally, the start action should not fail if the servers are already
running, and the stop action should not fail if the service is already
stopped (per LSB).
The attached patch implements this, but it could surely use a few more
eyes.
diff -Nru /tmp/VOmikdQ1Ui/postgresql-common-43/debian/init.d-functions
/tmp/YB2dZ8PXBL/postgresql-common-44/debian/init.d-functions
--- /tmp/VOmikdQ1Ui/postgresql-common-43/debian/init.d-functions
2005-12-22 22:36:53.000000000 +0100
+++ /tmp/YB2dZ8PXBL/postgresql-common-44/debian/init.d-functions
2006-03-02 16:47:44.000000000 +0100
@@ -13,7 +13,8 @@
[ "$(ls /etc/postgresql/$2)" ] || return
[ -x "/usr/lib/postgresql/$2/bin/postmaster" ] || return
- unset fail
+ status=0
+ log_daemon_msg "$3"
for c in /etc/postgresql/"$2"/*; do
[ -e "$c/pgdata" ] || continue
name=$(basename "$c")
@@ -26,10 +27,11 @@
fi
[ "$start" = "auto" ] || continue
- log_begin_msg "$3 $name"
- pg_ctlcluster "$2" "$name" $1
- log_end_msg $?
+ log_progress_msg "$name"
+ pg_ctlcluster "$2" "$name" $1 >/dev/null
+ status=$(($status || $?))
done
+ log_end_msg $status
if [ "$fail" ]; then
[ -z "$ERRMSG" ] || echo -e "\n$ERRMSG" >&2
exit 1
@@ -46,26 +48,25 @@
install -d -m 2775 -o postgres -g postgres /var/run/postgresql
fi
- do_ctl_all start "$1" "Starting PostgreSQL $1 database server:"
+ do_ctl_all start "$1" "Starting PostgreSQL $1 database server"
}
# stop all clusters of version $1
# output according to Debian Policy for init scripts
stop() {
- do_ctl_all stop "$1" "Stopping PostgreSQL $1 database server:"
+ do_ctl_all stop "$1" "Stopping PostgreSQL $1 database server"
}
# restart all clusters of version $1
# output according to Debian Policy for init scripts
restart() {
- do_ctl_all stop "$1" "Stopping PostgreSQL $1 database server:"
- do_ctl_all start "$1" "Starting PostgreSQL $1 database server:"
+ do_ctl_all restart "$1" "Restarting PostgreSQL $1 database server"
}
# reload all clusters of version $1
# output according to Debian Policy for init scripts
reload() {
- do_ctl_all reload "$1" "Reloading PostgreSQL $1 database server:"
+ do_ctl_all reload "$1" "Reloading PostgreSQL $1 database server"
}
status() {
@@ -74,16 +75,15 @@
# start pg_autovacuum for all clusters of version $1
autovac_start() {
- do_ctl_all autovac-start "$1" "Starting PostgreSQL $1 autovacuum daemon:"
+ do_ctl_all autovac-start "$1" "Starting PostgreSQL $1 autovacuum daemon"
}
# stop pg_autovacuum for all clusters of version $1
autovac_stop() {
- do_ctl_all autovac-stop "$1" "Stopping PostgreSQL $1 autovacuum daemon:"
+ do_ctl_all autovac-stop "$1" "Stopping PostgreSQL $1 autovacuum daemon"
}
# restart pg_autovacuum for all clusters of version $1
autovac_restart() {
- do_ctl_all autovac-restart "$1" "Restarting PostgreSQL $1 autovacuum
daemon:"
+ do_ctl_all autovac-restart "$1" "Restarting PostgreSQL $1 autovacuum
daemon"
}
-
diff -Nru /tmp/VOmikdQ1Ui/postgresql-common-43/pg_ctlcluster
/tmp/YB2dZ8PXBL/postgresql-common-44/pg_ctlcluster
--- /tmp/VOmikdQ1Ui/postgresql-common-43/pg_ctlcluster 2006-02-06
23:43:54.000000000 +0100
+++ /tmp/YB2dZ8PXBL/postgresql-common-44/pg_ctlcluster 2006-03-02
16:19:12.000000000 +0100
@@ -70,7 +70,7 @@
my $pidfile = $info{'pgdata'}.'/postmaster.pid';
if (check_running_postmaster $pidfile) {
print "Cluster is already running.\n";
- exit 1;
+ exit 0;
}
# Remove invalid or stale PID file
@@ -88,7 +88,8 @@
if ($info{'running'}) {
error 'pid file is invalid, please manually kill the stale server
process.';
}
- error 'cluster is not running';
+ print 'Cluster is not running.';
+ exit 0;
}
# check if a cluster reliably connects or fails