On Thu, 2007-12-27 at 09:41 +0000, fujii(dot)masao(at)oss(dot)ntt(dot)co(dot)jp wrote:
> The following bug has been logged online:
>
> Bug reference: 3843
> Logged by:
> Email address: fujii(dot)masao(at)oss(dot)ntt(dot)co(dot)jp
> PostgreSQL version: 8.3beta4
> Operating system: RHEL5
> Description: archiver process is restarted after the smart shutdown
> Details:
>
> Is this a bug though archiver process is restarted after the smart
> shutdown?
> BTW, the archiver process ends after a few minutes.
>
>
> [postgresql.conf]
> archive_mode = on
> archive_command = 'cp %p ../arch/%f'
>
> $ pg_ctl start
> ...
> $ pgrep -fl postgres
> 22781 /home/postgres/bin/postgres
> 22783 postgres: writer process
> 22784 postgres: wal writer process
> 22785 postgres: autovacuum launcher process
> 22786 postgres: archiver process
> 22787 postgres: stats collector process
> $ pg_ctl stop (*1)
> ...
> $ pgrep -fl postgres
> 23579 postgres: archiver process
>
>
> (*1)
> It's easy to reproduce waiting between a few seconds
> for pg_ctl start and stop in this problem.
Code says
/*
* If we have lost the archiver, try to start a new one. We do this
* even if we are shutting down, to allow archiver to take care of any
* remaining WAL files.
*/
The previous behaviour was to shut down even when there were WAL files
needing to be archived, which was considered an issue by many.
I notice that when we re-enter the archiver in this way that we may end
up waiting a full minute before we eventually shutdown because of the
normal wait in the archive loop.
If there are no objections, I will add an extra condition to the wait,
so that we wait if
while (!(wakened || got_SIGHUP) && PostmasterIsAlive(true))
rather than just
while (!(wakened || got_SIGHUP))
This runs getppid() once per second, so shouldn't be an overhead.
--
Simon Riggs
2ndQuadrant http://www.2ndQuadrant.com