diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 8764084e21..c4d956b9c1 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -8783,6 +8783,8 @@ do_pg_abort_backup(int code, Datum arg) { XLogCtl->Insert.forcePageWrites = false; } + + sessionBackupState = SESSION_BACKUP_NONE; WALInsertLockRelease(); if (emit_warning) diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 5244823ff8..22255b6ce6 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -233,6 +233,12 @@ perform_base_backup(basebackup_options *opt, bbsink *sink) StringInfo labelfile; StringInfo tblspc_map_file; backup_manifest_info manifest; + SessionBackupState status = get_backup_status(); + + if (status == SESSION_BACKUP_RUNNING) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("a backup is already in progress in this session"))); /* Initial backup state, insofar as we know it now. */ state.tablespaces = NIL;