Skip site navigation (1) Skip section navigation (2)

Re: What is the best and easiest implementation to reliably wait for the completion of startup?

From: "MauMau" <maumau307(at)gmail(dot)com>
To: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: What is the best and easiest implementation to reliably wait for the completion of startup?
Date: 2011-05-28 03:42:39
Message-ID: 45EA0477951744379296D472397BCDD4@maumau (view raw or whole thread)
Lists: pgsql-hackers
From: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>
> "MauMau" <maumau307(at)gmail(dot)com> writes:
>> The bad thing is that pg_ctl continues to wait until the specified 
>> duration
>> passes, even if postgres fails to start. For example, it is naturally
>> desirable for pg_ctl to terminate when postgresql.conf contains a syntax
>> error.
> Hmm, I thought we'd fixed this in the last go-round of pg_ctl wait
> revisions, but testing proves it does not work desirably in HEAD:
> not only does pg_ctl wait till its timeout elapses, but it then reports
> "server started" even though the server didn't start.  That's clearly a
> bug :-(
> I think your proposal of a pipe-based solution might be overkill though.
> Seems like it would be sufficient for pg_ctl to give up if it doesn't
> see the file present within a couple of seconds of
> postmaster startup.  I don't really want to add logic to the postmaster
> to have the sort of reporting protocol you propose, because not
> everybody uses pg_ctl to start the postmaster.  In any case, we need a
> fix in 9.1 ...

Yes, I was a bit afraid the pipe-based fix might be overkill, too, so I was 
wondering if there might be a more easy solution.

"server started"... I missed it. That's certainly a bug, as you say.

I was also considering the solution exactly as you 
suggest, but that has a problem -- how many seconds do we assume for "a 
couple of seconds"? If the system load is temporarily so high that 
postmaster takes many seconds to create, pg_ctl mistakenly 
thinks that postmaster failed to start. I know this is a hypothetical rare 
case. I don't like touching the postmaster logic and complicating it, but 
logical correctness needs to come first (Japanese users are very severe).

Another problem with solution happens after postmaster 
crashes. When postmaster crashes, is left. If the pid in is allocated to some non-postgres process and that process 
remains, pg_ctl misjudges that postmaster is starting up, and waits for long 


In response to

pgsql-hackers by date

Next:From: MauMauDate: 2011-05-28 03:47:30
Subject: Re: How can I check the treatment of bug fixes?
Previous:From: Alvaro HerreraDate: 2011-05-28 01:53:52
Subject: Re: [COMMITTERS] pgsql: Allow ALTER TABLE name {OF type | NOT OF}.

Privacy Policy | About PostgreSQL
Copyright © 1996-2015 The PostgreSQL Global Development Group