Re: Service startup delay

Bruce Momjian <[email protected]>
Newsgroups gmane.comp.db.postgresql.devel.win32,gmane.comp.db.postgresql.devel.patches
Message-ID <[email protected]>
OK, I started running tests with pg_ctl -w and found it did not work
even on Unix.  I found that the code was not checking the return value
of PQsetdbLogin(), and wasn't looping properly using a sleep.

The attached applied patch should fix should fix your reported problem.

---------------------------------------------------------------------------

Max Dunn wrote:
> I tried adding the "-w" option to the registry entry for starting the
> Postgres service(see below) but it didn't help; Tomcat still started before
> Postgres was ready:
> 
> c:\Program Files\Xythos\WebFile Server Evaluation\pgsql\bin>sc qc postgresql
> [SC] GetServiceConfig SUCCESS
> 
> SERVICE_NAME: postgresql
>         TYPE               : 10  WIN32_OWN_PROCESS
>         START_TYPE         : 2   AUTO_START
>         ERROR_CONTROL      : 1   NORMAL
>         BINARY_PATH_NAME   : C:/Program Files/Xythos/WebFile Server
> Evaluation/p
> gsql/bin/pg_ctl.exe runservice -w -N "PostgreSQL" -D "C:/Program
> Files/Xythos/We
> bFile Server Evaluation/pgsql/data"  -o "-i"
>         LOAD_ORDER_GROUP   :
>         TAG                : 0
>         DISPLAY_NAME       : PostgreSQL
>         DEPENDENCIES       : RPCSS
>         SERVICE_START_NAME : .\postgres 
> 
> --Max
> 
> -----Original Message-----
> From: Dave Page [mailto:[email protected]] 
> Sent: Friday, August 20, 2004 4:09 PM
> To: Bruce Momjian; Barry Lind
> Cc: [email protected]; Max Dunn
> Subject: RE: [pgsql-hackers-win32] Service startup delay
> 
>  
> 
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]] On Behalf Of Bruce 
> > Momjian
> > Sent: 20 August 2004 19:00
> > To: Barry Lind
> > Cc: [email protected]; Max Dunn
> > Subject: Re: [pgsql-hackers-win32] Service startup delay
> > 
> > 
> > I think you need to use 'pg_ctl -w' to wait for it to start.
> > 
> 
> Does -w work when starting in service mode? Aside from that, one possible
> problem with this is what happens if the database goes into recovery mode at
> startup. Whilst waiting for that to run, I would think it's possible that
> the service control manager would timeout waiting for the service to
> complete startup.
> 
> Regards, Dave.
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
>       joining column's datatypes do not match
> 

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [email protected]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073


---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html
/bjm/diff (text/plain, 1018 B)
Index: src/bin/pg_ctl/pg_ctl.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/bin/pg_ctl/pg_ctl.c,v
retrieving revision 1.24
diff -c -c -r1.24 pg_ctl.c
*** src/bin/pg_ctl/pg_ctl.c	29 Jul 2004 16:11:11 -0000	1.24
--- src/bin/pg_ctl/pg_ctl.c	21 Aug 2004 03:07:25 -0000
***************
*** 404,415 ****
  
  	for (i = 0; i < wait_seconds; i++)
  	{
! 		if ((conn = PQsetdbLogin(NULL, portstr, NULL, NULL, "template1", NULL, NULL)) != NULL)
  		{
  			PQfinish(conn);
  			success = true;
  			break;
  		}
  	}
  
  	return success;
--- 404,426 ----
  
  	for (i = 0; i < wait_seconds; i++)
  	{
! 		if ((conn = PQsetdbLogin(NULL, portstr, NULL, NULL,
! 					"template1", NULL, NULL)) != NULL &&
! 			PQstatus(conn) == CONNECTION_OK)
  		{
  			PQfinish(conn);
  			success = true;
  			break;
  		}
+ 		else
+ 		{
+ 			if (!silence_echo)
+ 			{
+ 				printf(".");
+ 				fflush(stdout);
+ 			}
+ 			pg_usleep(1000000); /* 1 sec */
+ 		}
  	}
  
  	return success;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.