From 8328a15f8f95cad3fa99bbab551cade0a8403708 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Mon, 24 Oct 2022 12:02:33 +0200 Subject: Fix recently added incorrect assertion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit df3737a651f4 added an incorrect assertion about the preconditions for invoking the backup cleanup callback: it misfires at session end in case a backup completes successfully. Fix it, using coding from Michaƫl Paquier. Also add some tests for the various cases. Reported by Kyotaro Horiguchi Discussion: https://postgr.es/m/20221021.161038.1277961198945653224.horikyota.ntt@gmail.com --- src/backend/access/transam/xlog.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/backend/access/transam/xlog.c') diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index dea978a962a..8f10effe3a4 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8841,9 +8841,8 @@ do_pg_abort_backup(int code, Datum arg) { bool during_backup_start = DatumGetBool(arg); - /* Only one of these conditions can be true */ - Assert(during_backup_start ^ - (sessionBackupState == SESSION_BACKUP_RUNNING)); + /* If called during backup start, there shouldn't be one already running */ + Assert(!during_backup_start || sessionBackupState == SESSION_BACKUP_NONE); if (during_backup_start || sessionBackupState != SESSION_BACKUP_NONE) { -- cgit v1.2.3