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

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

From: "MauMau" <maumau307(at)gmail(dot)com>
To: <pgsql-hackers(at)postgresql(dot)org>
Subject: What is the best and easiest implementation to reliably wait for the completion of startup?
Date: 2011-05-27 12:24:04
Message-ID: E04816E53DDC4D53A74A6A51BC99C0B5@maumau (view raw or flat)
Thread:
Lists: pgsql-hackers
Hello,

I've encountered a problem of PostgreSQL startup, and I can think of a 
simple solution for that. However, I don't yet have much knowledge about 
PostgreSQL implementation, I'd like to ask you about what is the best and 
easiest solution. If it is easy for me to work on during my spare time at 
home, I'm willing to implement the patch.

[problem]
I can't reliably wait for the completion of PostgreSQL startup. I want 
pg_ctl to wait until the server completes startup and accepts connections.

Yes, we have "-w" and "-t wait_second" options of pg_ctl. However, what 
value should I specify to -t? I have to specify much time, say 3600 seconds, 
in case the startup processing takes long for crash recovery or archive 
recovery.

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.


[solution idea]
Use unnamed pipes for postmaster to notify pg_ctl of the completion of 
startup. That is:

pg_ctl's steps:
1. create a pair of unnamed pipes.
2. starts postgres.
3. read the pipe, waiting for a startup completion message from postmaster.

postmaster's steps:
1. inherit a pair of unnamed pipes from pg_ctl.
2. do startup processing.
3. write a startup completion message to the pipe, then closes the pipe.

I'm wondering if this is correct and easy. One concern is whether postmaster 
can inherit pipes through system() call.

Please give me your ideas. Of course, I would be very happy if some 
experienced community member could address this problem.

And finally, do you think this should be handled as a bug, or an improvement 
in 9.2?

Regards
MauMau


Responses

pgsql-hackers by date

Next:From: MauMauDate: 2011-05-27 12:36:39
Subject: How can I check the treatment of bug fixes?
Previous:From: Peter GeogheganDate: 2011-05-27 11:05:11
Subject: Re: kill -KILL: What happens?

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