Hi, On Tue, Jun 22, 2010 at 10:05:10AM -0600, Serge Dubrouski wrote: > Yes it is possible to parse it from postgresql.conf of from provided > config file. But I'd rather not do that. One can set unix_socket_dir > parameter to "/tmp" or "/var/tmp" or some other directory that > shouldn't be owned by PostgreSQL user. I mead this parameter has to be > used very carefully. There are some bug reports for PostgreSQL > indicating that not all binary tools tolerate changing of that > parameter. So I'd rather have a system/database administrator > completely understanding what he/she is doing. > > Attached is an improved patch with double quotes and error checks.
Patch applied. Cheers, Dejan > On Tue, Jun 22, 2010 at 6:53 AM, Lars Ellenberg > <[email protected]> wrote: > > On Tue, Jun 22, 2010 at 01:16:35PM +0200, Dejan Muhamedagic wrote: > >> Hi Serge, > >> > >> On Mon, Jun 21, 2010 at 10:19:13AM -0600, Serge Dubrouski wrote: > >> > Hello - > >> > > >> > Some users reported a need for this patch to cover the situation with > >> > non-default unix socket directory in PostgreSQL configuration. > >> > >> Why not set OCF_RESKEY_socketdir_default=/var/run/postgresql (or > >> whatever is its standard location)? I don't see how things could > >> go wrong with that. > >> > >> BTW, how comes that nobody complained about this before? I > >> understand that cleaning up all directories under /var/run is in > >> LSB. > >> > >> Cheers, > >> > >> Dejan > >> > >> > -- > >> > Serge Dubrouski. > >> > >> > --- a/heartbeat/pgsql 2010-06-21 09:41:06.000000000 -0600 > >> > +++ b/heartbeat/pgsql 2010-06-21 10:03:04.000000000 -0600 > >> > @@ -27,6 +27,7 @@ > >> > OCF_RESKEY_start_opt_default="" > >> > OCF_RESKEY_pgdb_default=template1 > >> > OCF_RESKEY_logfile_default=/dev/null > >> > +OCF_RESKEY_socketdir_default="" > > > > could it be parsed from the postgres config file instead? > > > >> > OCF_RESKEY_stop_escalate_default=30 > >> > > >> > : ${OCF_RESKEY_pgctl=${OCF_RESKEY_pgctl_default}} > >> > @@ -39,6 +40,7 @@ > >> > : ${OCF_RESKEY_start_opt=${OCF_RESKEY_start_opt_default}} > >> > : ${OCF_RESKEY_pgdb=${OCF_RESKEY_pgdb_default}} > >> > : ${OCF_RESKEY_logfile=${OCF_RESKEY_logfile_default}} > >> > +: ${OCF_RESKEY_socketdir=${OCF_RESKEY_socketdir_default}} > >> > : ${OCF_RESKEY_stop_escalate=${OCF_RESKEY_stop_escalate_default}} > >> > > >> > usage() { > >> > @@ -166,6 +168,14 @@ > >> > <content type="string" default="${OCF_RESKEY_logfile_default}" /> > >> > </parameter> > >> > > >> > +<parameter name="socketdir" unique="0" required="0"> > >> > +<longdesc lang="en"> > >> > +Unix socket directory for PostgeSQL > >> > +</longdesc> > >> > +<shortdesc lang="en">socketdir</shortdesc> > >> > +<content type="string" default="${OCF_RESKEY_socketdir_default}" /> > >> > +</parameter> > >> > + > >> > <parameter name="stop_escalate" unique="0" required="0"> > >> > <longdesc lang="en"> > >> > Number of shutdown retries (using -m fast) before resorting to -m > >> > immediate > >> > @@ -238,6 +248,11 @@ > >> > ocf_log err "PostgreSQL can't write to the log file: > >> > $OCF_RESKEY_logfile" > >> > return $OCF_ERR_GENERIC > >> > fi > >> > + # Check if we need to create a socket directory > >> > + if [ -n "$OCF_RESKEY_socketdir" ] > >> > + then > >> > + check_socket_dir $OCF_RESKEY_socketdir > >> > + fi > >> > > >> > # Set options passed to pg_ctl > >> > pgctl_options="$OCF_RESKEY_ctl_opt -D $OCF_RESKEY_pgdata -l > >> > $OCF_RESKEY_logfile" > >> > @@ -419,6 +434,17 @@ > >> > return 0 > >> > } > >> > > >> > +# Check socket directory > >> > +check_socket_dir() { > >> > + if [ ! -d "$1" ] > >> > + then > >> > + mkdir $1 > > > > please mkdir "$1" > > and if mkdir fails, fail the script. > > > >> > + fi > >> > + > >> > + chmod 2775 $1 > > > > "$1", add error check > > > >> > + chown $OCF_RESKEY_pgdba:$(getent passwd $OCF_RESKEY_pgdba | cut -d > >> > ":" -f 4) $1 > > > > "$1", add error check > > btw, I'd first chown, then chmod. > > > > -- > > : Lars Ellenberg > > : LINBIT | Your Way to High Availability > > : DRBD/HA support and consulting http://www.linbit.com > > > > DRBD® and LINBIT® are registered trademarks of LINBIT, Austria. > > _______________________________________________________ > > Linux-HA-Dev: [email protected] > > http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev > > Home Page: http://linux-ha.org/ > > > > > > -- > Serge Dubrouski. > --- a/heartbeat/pgsql 2010-06-22 08:58:33.000000000 -0600 > +++ b/heartbeat/pgsql 2010-06-22 09:51:48.000000000 -0600 > @@ -27,6 +27,7 @@ > OCF_RESKEY_start_opt_default="" > OCF_RESKEY_pgdb_default=template1 > OCF_RESKEY_logfile_default=/dev/null > +OCF_RESKEY_socketdir_default="" > OCF_RESKEY_stop_escalate_default=30 > > : ${OCF_RESKEY_pgctl=${OCF_RESKEY_pgctl_default}} > @@ -39,6 +40,7 @@ > : ${OCF_RESKEY_start_opt=${OCF_RESKEY_start_opt_default}} > : ${OCF_RESKEY_pgdb=${OCF_RESKEY_pgdb_default}} > : ${OCF_RESKEY_logfile=${OCF_RESKEY_logfile_default}} > +: ${OCF_RESKEY_socketdir=${OCF_RESKEY_socketdir_default}} > : ${OCF_RESKEY_stop_escalate=${OCF_RESKEY_stop_escalate_default}} > > usage() { > @@ -166,6 +168,14 @@ > <content type="string" default="${OCF_RESKEY_logfile_default}" /> > </parameter> > > +<parameter name="socketdir" unique="0" required="0"> > +<longdesc lang="en"> > +Unix socket directory for PostgeSQL > +</longdesc> > +<shortdesc lang="en">socketdir</shortdesc> > +<content type="string" default="${OCF_RESKEY_socketdir_default}" /> > +</parameter> > + > <parameter name="stop_escalate" unique="0" required="0"> > <longdesc lang="en"> > Number of shutdown retries (using -m fast) before resorting to -m immediate > @@ -238,6 +248,11 @@ > ocf_log err "PostgreSQL can't write to the log file: > $OCF_RESKEY_logfile" > return $OCF_ERR_GENERIC > fi > + # Check if we need to create a socket directory > + if [ -n "$OCF_RESKEY_socketdir" ] > + then > + check_socket_dir $OCF_RESKEY_socketdir > + fi > > # Set options passed to pg_ctl > pgctl_options="$OCF_RESKEY_ctl_opt -D $OCF_RESKEY_pgdata -l > $OCF_RESKEY_logfile" > @@ -419,6 +434,30 @@ > return 0 > } > > +# Check socket directory > +check_socket_dir() { > + if [ ! -d "$1" ] > + then > + if ! mkdir "$1" > + then > + ocf_log err "Cannot create directory $1" > + exit $OCF_ERR_GENERIC > + fi > + fi > + > + if ! chown $OCF_RESKEY_pgdba:$(getent passwd $OCF_RESKEY_pgdba | cut -d > ":" -f 4) "$1" > + then > + ocf_log err "Cannot change ownership for $1" > + exit $OCF_ERR_GENERIC > + fi > + > + if ! chmod 2775 "$1" > + then > + ocf_log err "Cannot change permissions for $1" > + exit $OCF_ERR_GENERIC > + fi > +} > + > # > # 'main' starts here... > # > _______________________________________________________ > Linux-HA-Dev: [email protected] > http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev > Home Page: http://linux-ha.org/ _______________________________________________________ Linux-HA-Dev: [email protected] http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev Home Page: http://linux-ha.org/
