On Mon, Sep 20, 2010 at 9:44 PM, Fujii Masao <masao.fu...@gmail.com> wrote:
> On Tue, Sep 21, 2010 at 9:48 AM, fazool mein <fazoolm...@gmail.com> wrote: > > Hi, > > > > I want to shut down the server under certain conditions that can be > checked > > inside a backend process. For instance, while running symmetric > replication, > > if the primary dies, I want the the walreceiver to detect that and > shutdown > > the standby. The reason for shutdown is that I want to execute some other > > stuff before I start the standby as a primary. Creating a trigger file > > doesn't help as it converts the standby into primary at run time. > > > > Using proc_exit() inside walreceiver only terminates the walreceiver > > process, which postgres starts again. The other way I see is using > > ereport(PANIC, ...). Is there some other way to shutdown the main server > > from within a backend process? > > Are you going to change the source code? If yes, you might be able to > do that by making walreceiver send the shutdown signal to postmaster. > > Yes, I'll be modifying the code. In the walreceiver, I used the following to send a shutdown to the postmaster: kill(getppid(), SIGTERM); > If no, I think that a straightforward approach is to use a clusterware > like pacemaker. That is, you need to make a clusterware periodically > check the master and cause the standby to end when detecting the crash > of the master. > > This was another option, but I have to modify the code for this particular case. Thanks for your help. Regards,