Re: [pgsql-hackers-win32] Service startup delay - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [pgsql-hackers-win32] Service startup delay |
Date | |
Msg-id | 200408210312.i7L3CQQ09755@candle.pha.pa.us Whole thread Raw |
List | pgsql-patches |
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:dpage@vale-housing.co.uk] > Sent: Friday, August 20, 2004 4:09 PM > To: Bruce Momjian; Barry Lind > Cc: pgsql-hackers-win32@postgresql.org; Max Dunn > Subject: RE: [pgsql-hackers-win32] Service startup delay > > > > > -----Original Message----- > > From: pgsql-hackers-win32-owner@postgresql.org > > [mailto:pgsql-hackers-win32-owner@postgresql.org] On Behalf Of Bruce > > Momjian > > Sent: 20 August 2004 19:00 > > To: Barry Lind > > Cc: pgsql-hackers-win32@postgresql.org; 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 pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 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;
pgsql-patches by date: