Skip to content

Commit ee79647

Browse files
committed
Prevent BASE_BACKUP in the middle of another backup in the same session.
Multiple non-exclusive backups are able to be run conrrently in different sessions. But, in the same session, only one non-exclusive backup can be run at the same moment. If pg_backup_start (pg_start_backup in v14 or before) is called in the middle of another non-exclusive backup in the same session, an error is thrown. However, previously, in logical replication walsender mode, even if that walsender session had already called pg_backup_start and started a non-exclusive backup, it could execute BASE_BACKUP command and start another non-exclusive backup. Which caused subsequent pg_backup_stop to throw an error because BASE_BACKUP unexpectedly reset the session state marked by pg_backup_start. This commit prevents BASE_BACKUP command in the middle of another non-exclusive backup in the same session. Back-patch to all supported branches. Author: Fujii Masao Reviewed-by: Kyotaro Horiguchi, Masahiko Sawada, Michael Paquier, Robert Haas Discussion: https://postgr.es/m/3374718f-9fbf-a950-6d66-d973e027f44c@oss.nttdata.com
1 parent 12c254c commit ee79647

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/backend/replication/basebackup.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -949,6 +949,12 @@ SendBaseBackup(BaseBackupCmd *cmd)
949949
{
950950
basebackup_options opt;
951951
bbsink *sink;
952+
SessionBackupState status = get_backup_status();
953+
954+
if (status == SESSION_BACKUP_RUNNING)
955+
ereport(ERROR,
956+
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
957+
errmsg("a backup is already in progress in this session")));
952958

953959
parse_basebackup_options(cmd->options, &opt);
954960

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy