Heikki Linnakangas <heikki.linnakan...@enterprisedb.com> writes:
> It's tempting to just remove the "!isRedo" condition, but then we have
> another problem: if bgwriter hasn't been started yet, and the shmem
> queue is full, we get stuck in register_unlink() trying to send the
> message and failing.

> In archive recovery, we always start bgwriter at the beginning of WAL
> replay. In crash recovery, we don't start bgwriter until the end of wAL
> replay. So we could change the "!isRedo" condition to
> "!InArchiveRecovery". It's not a very clean solution, but it's simple.

I looked through the callers of smgrdounlink(), and found that
FinishPreparedTransaction passes isRedo = true.  I'm not sure at the
moment what the reasoning behind that was, but it does seem to mean that
checking InArchiveRecovery instead of isRedo may not be quite right.

                        regards, tom lane

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to