Re: [HACKERS] Assertion failure when the non-exclusive pg_stop_backup aborted.
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Michael Paquier <michael.paquier@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2017-11-14T17:59:05Z
Lists: pgsql-hackers
On Fri, Sep 22, 2017 at 4:42 PM, Masahiko Sawada <sawada.mshk@gmail.com> wrote: > On Fri, Sep 22, 2017 at 3:46 PM, Michael Paquier > <michael.paquier@gmail.com> wrote: >> On Fri, Sep 22, 2017 at 3:24 PM, Masahiko Sawada <sawada.mshk@gmail.com> wrote: >>> I have a question. Since WALInsertLockRelease seems not to call >>> LWLockWaitForVar I thought you wanted to mean LWLockReleaseClearVar >>> instead, is that right? >> >> This looks like a copy-pasto from my side. Thanks for spotting it. > > Okay, attached the latest version patch. + /* Quick exit if we have done the backup */ + if (XLogCtl->Insert.exclusiveBackupState == EXCLUSIVE_BACKUP_NONE) + return; This quick exit seems to cause another problem. Please imagine the case where there is no exclusive backup running, a backend starts non-exclusive backup and is terminated before calling pg_stop_backup(). In this case, do_pg_abort_backup() should decrement XLogCtl->Insert.nonExclusiveBackups, but, with the patch, because of the above quick exit, do_pg_abort_backup() fails to decrement that. Regards, -- Fujii Masao
Commits
-
Fix bug in cancellation of non-exclusive backup to avoid assertion failure.
- 0668c84e2857 9.6.7 landed
- 133d2fab2f83 10.2 landed
- 56a95ee5118b 11.0 landed