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/

Reply via email to