Re: PostgreSQL 7.3.2 running as NT service under Windows XP not always

From: s0lao(at)netscape(dot)net (S(dot) L(dot))
To: frank(at)mail(dot)wvnet(dot)edu (Frank Seesink), pgsql-cygwin(at)postgresql(dot)org
Subject: Re: PostgreSQL 7.3.2 running as NT service under Windows XP not always
Date: 2003-05-26 06:05:30
Message-ID: 5F53BE9F.5E466D9D.00013D13@netscape.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-cygwin

Frank,

[...]
> End result: the best I could come up with was creating another NT
>service whose sole purpose in life was to run in the 'postgres' user
>context and delete the postmaster.pid and \tmp\.s.PGSQL* lock files, and
>then making the 'postmaster' service depend on that service. This way,
>'postmaster' won't start until AFTER the postmaster.pid file has been
>deleted (if it exists).
>
> Please note a few caveats though. Do not try creating a shell script
>or .BATch file which you then setup as an NT service via cygrunsrv. At
>least when I tried, doing so led to the service firing up, executing the
>script, and--and this next part is really important--SHUTTING DOWN
>AGAIN. The problem here is that if you have 'postmaster' depend on this
>service, it will never fire up, as the startup sequence will go
>
> * system startup sequence
> * NT service to delete postmaster.pid service starts up,
> executes, and shuts down
> * 'postmaster' attempts to startup, but finding the above
> service shutdown, fails since it depends on this service.
>
[...]
>In other words,
>
> 1. I created a simple .BATch file to delete the necessary files
> (note this is a .BATch file, not a Cygwin BASH shell script,
> so paths are set accordingly):
>
> __________________________________________________
> @echo off
> del c:\cygwin\tmp\.s.PGSQL*
> del c:\cygwin\usr\share\postgresql\data\postmaster.pid
> __________________________________________________
>
> 2. I then created an NT service via FireDaemon named
> 'cygwin-start' which launched this .BATch file as a console
> app, running it hidden, etc.
>
> 3. Using the Cygwin BASH shell, I shutdown and removed the
> 'postmaster' service, then rebuilt the service with a
> modified command to make 'postmaster' depend on my new
> FireDaemon-created service, as follows:
>
> __________________________________________________
> $ net stop postmaster
> $ cygrunsrv --remove postmaster
> $ cygrunsrv --install postmaster --path /usr/bin/postmaster --args "-D
>/usr/share/postgresql/data -i" --dep ipc-daemon --dep cygwin-start
>--termsig INT --user postgres --shutdown
> __________________________________________________
>
>
>Voila! It's not pretty, but it works. And unlike shutdown
>scripts--also not inherent in Windows NT/2000/XP--this handles the case
>of power outages and sudden power failure where 'postmaster' doesn't
>even get a chance to properly shutdown. (As for the administrative view
>of these situations, I'll leave that to the reader to determine their
>needs.)
>
> Please note this still doesn't answer the question why the
>postmaster.pid file is left behind sometimes on Windows
>shutdown/restart. But for those needing their Cygwin PostgreSQL
>database up and running on startup without issue, this is just one
>possible scenario.
>
>P.S. If I can figure out a way to use cygrunsrv to create a service
> that runs a script and then remains active (so 'postmaster'
> will load), I'll post here. Thus far, howerver, basic attempts
> like creating a service that points to a shell script fire up,
> execute the script, and then immediately shutdown. Possibly
> having a script that launches another shell that runs the script
> would work, as the shell would still be 'running'. But haven't
> tried yet, so don't know.
>

Sorry, I've no NT/W2K/XP machine to test but:

#!/bin/sh
while :
do
if [ "$xfirst" != "1" ]
then
echo first >/tmp/pgdependservice.log
xfirst=1
rm /tmp/.s.PGSQL*
rm /usr/share/postgresql/data/postmaster.pid
sleep 15
else
echo going... >>/tmp/pgdependservice.log
sleep 15
fi
done

wouldn't do it ?

SLao

__________________________________________________________________
McAfee VirusScan Online from the Netscape Network.
Comprehensive protection for your entire computer. Get your free trial today!
http://channels.netscape.com/ns/computing/mcafee/index.jsp?promo=393397

Get AOL Instant Messenger 5.1 free of charge. Download Now!
http://aim.aol.com/aimnew/Aim/register.adp?promo=380455

Responses

Browse pgsql-cygwin by date

  From Date Subject
Next Message Frank Seesink 2003-05-27 18:15:27 Re: PostgreSQL 7.3.2 running as NT service under Windows XP not always
Previous Message Jason Tishler 2003-05-24 00:54:35 Fwd: Re: PostgreSQL 7.3.2 running as NT service under Windows XP