I'm using scripts in /Library/StartupItems/PostgreSQL

PostgreSQL starts manually just fine via
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile start

PostgreSQL will not start on System restart using files in /Library/StartupItems/PostgreSQL (See below).

If I execute the start command above just after a System start I get
   pg_ctl: another server may be running; trying to start server anyway
   server starting
and then it starts and runs fine.

If I shut down PG using
  pg_ctl stop (no users connected)
it stops and subsequently starts using code above just fine, w/o the warning.

---
I added the command:
  date > /Users/showmefile
to appropriate portions of /Library/StartupItems/PostgreSQL/PostgreSQL as seen below, and the script portions ARE appropriately being executed.

How come shutdown isn't clearing things up?
Or is the problem in the startup?

Thanks!
smithrn (at) u (dot) washington (dot) edu

--------------------------------------------
PostgreSQL
--------------------------------------------
#!/bin/sh

##
# PostgreSQL RDBMS Server
##

# PostgreSQL boot time startup script for Darwin/Mac OS X. To install, change
# the "prefix", "PGDATA", "PGUSER", and "PGLOG" variables below as
# necessary. Next, create a new directory, "/Library/StartupItems/PostgreSQL".
# Then copy this script and the accompanying "StartupParameters.plist" file
# into that directory. The name of this script file *must* be the same as the
# directory it is in. So you'll end up with these two files:
#
#    /Library/StartupItems/PostgreSQL/PostgreSQL
#    /Library/StartupItems/PostgreSQL/StartupParameters.plist
#
# Next, add this line to the /etc/hostconfig file:
#
# POSTGRESQLSERVER=-YES-
#
# The startup bundle will now be ready to go. To prevent this script from
# starting PostgreSQL at system startup, simply change that line in
# /etc/hostconfig back to:
#
# POSTGRESQLSERVER=-NO-
#
# For more information on Darwin/Mac OS X startup bundles, see this article:
#
# http://www.opensource.apple.com/projects/documentation/howto/html/SystemStarter_HOWTO.html
#
# Created by David Wheeler, 2002.

# modified by Ray Aspeitia 12-03-2003 :
# added log rotation script to db startup
# modified StartupParameters.plist "Provides" parameter to make it easier to
# start and stop with the SystemStarter utitlity

# use the below command in order to correctly start/stop/restart PG with log rotation script:
# SystemStarter [start|stop|restart] PostgreSQL

################################################################################
## EDIT FROM HERE
################################################################################

# Installation prefix
prefix="/usr/local/pgsql"

# Data directory
PGDATA="/usr/local/pgsql/data"

# Who to run the postmaster as, usually "postgres".  (NOT "root")
PGUSER="postgres"

# the logfile path and name (NEEDS to be writeable by PGUSER)
PGLOG="${PGDATA}/logs/logfile"

# do you want to rotate the log files, 1=true 0=false
ROTATELOGS=1

# logfile rotate in seconds
ROTATESEC="604800"


################################################################################
## STOP EDITING HERE
################################################################################

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# What to use to start up the postmaster (we do NOT use pg_ctl for this,
# as it adds no value and can cause the postmaster to misrecognize a stale
# lock file)
DAEMON="$prefix/bin/postmaster"

# What to use to shut down the postmaster
PGCTL="$prefix/bin/pg_ctl"

# The apache log rotation utility
LOGUTIL="/usr/sbin/rotatelogs"

. /etc/rc.common

StartService () {
   if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then
       ConsoleMessage "Starting PostgreSQL database server"
       if [ "${ROTATELOGS}" = "1" ]; then
# sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &" sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' 2>&1 | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &"
       else
           sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1
       fi
   fi
date > /Users/PG_Started
}

StopService () {
   ConsoleMessage "Stopping PostgreSQL database server"
   sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast
date > /Users/PG_Stopped
}

RestartService () {
   if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then
       ConsoleMessage "Restarting PostgreSQL database server"
   # should match StopService:
   sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast
   # should match StartService:
       if [ "${ROTATELOGS}" = "1" ]; then
# sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &" sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' 2>&1 | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &"
       else
           sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1
       fi
   else
       StopService
   fi
date > /Users/PG_Restarted
}

RunService "$1"


--------------------------------------------
StartupParameters.plist
--------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
   <key>Description</key>
   <string>PostgreSQL Database Server</string>
   <key>Messages</key>
   <dict>
       <key>start</key>
       <string>Starting PostgreSQL database server</string>
       <key>stop</key>
       <string>Stopping PostgreSQL database server</string>
       <key>restart</key>
       <string>Restarting PostgreSQL database server</string>
   </dict>
   <key>OrderPreference</key>
   <string>Late</string>
   <key>Provides</key>
   <array>
       <string>PostgreSQL</string>
   </array>
   <key>Requires</key>
   <array>
       <string>Disks</string>
       <string>Resolver</string>
   </array>
   <key>Uses</key>
   <array>
       <string>NFS</string>
       <string>NetworkTime</string>
   </array>
</dict>
</plist>
--------------------------------------------


---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to