Re: pg_promote() can cause busy loop
От | Michael Paquier |
---|---|
Тема | Re: pg_promote() can cause busy loop |
Дата | |
Msg-id | 20190905012555.GC14853@paquier.xyz обсуждение исходный текст |
Ответ на | pg_promote() can cause busy loop (Fujii Masao <masao.fujii@gmail.com>) |
Ответы |
Re: pg_promote() can cause busy loop
|
Список | pgsql-hackers |
On Thu, Sep 05, 2019 at 09:46:26AM +0900, Fujii Masao wrote: > I found small issue in pg_promote(). If postmaster dies > while pg_promote() is waiting for the standby promotion to finish, > pg_promote() can cause busy loop. This happens because > pg_promote() does nothing when WaitLatch() detects > the postmaster death event. I think that pg_promote() > should bail out of the loop immediately in that case. > > Attached is the patch for the fix. Indeed, this is not correct. - ereport(WARNING, - (errmsg("server did not promote within %d seconds", - wait_seconds))); + if (i >= WAITS_PER_SECOND * wait_seconds) + ereport(WARNING, + (errmsg("server did not promote within %d seconds", wait_seconds))); Would it make more sense to issue a warning mentioning the postmaster death and then return PG_RETURN_BOOL(false) instead of breaking out of the loop? It could be confusing to warn about a timeout if the postmaster died in parallel, and we know the actual reason why the promotion did not happen in this case. -- Michael
Вложения
В списке pgsql-hackers по дате отправления: