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:

Previous
From: Stefan Kaltenbrunner
Date:
Subject: Re: psql tab-complete patch #3
Next
From: Serguei Mokhov
Date:
Subject: Translation updates for 7.4/8.0: postgres-ru