This is an automated email from the ASF dual-hosted git repository.

maxyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit 055f1c00c9ee7b20596986ed78d869ba817dcfe0
Author: Fujii Masao <[email protected]>
AuthorDate: Tue Jul 12 11:53:29 2022 +0900

    Fix assertion failure and segmentation fault in backup code.
    
    When a non-exclusive backup is canceled, do_pg_abort_backup() is called
    and resets some variables set by pg_backup_start (pg_start_backup in v14
    or before). But previously it forgot to reset the session state indicating
    whether a non-exclusive backup is in progress or not in this session.
    
    This issue could cause an assertion failure when the session running
    BASE_BACKUP is terminated after it executed pg_backup_start and
    pg_backup_stop (pg_stop_backup in v14 or before). Also it could cause
    a segmentation fault when pg_backup_stop is called after BASE_BACKUP
    in the same session is canceled.
    
    This commit fixes the issue by making do_pg_abort_backup reset
    that session state.
    
    Back-patch to all supported branches.
    
    Author: Fujii Masao
    Reviewed-by: Kyotaro Horiguchi, Masahiko Sawada, Michael Paquier, Robert 
Haas
    Discussion: 
https://postgr.es/m/[email protected]
---
 src/backend/access/transam/xlog.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/backend/access/transam/xlog.c 
b/src/backend/access/transam/xlog.c
index 672d6fd792..8900018dd4 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -12524,6 +12524,8 @@ do_pg_abort_backup(int code, Datum arg)
        {
                XLogCtl->Insert.forcePageWrites = false;
        }
+
+       sessionBackupState = SESSION_BACKUP_NONE;
        WALInsertLockRelease();
 
        if (emit_warning)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to