From 76af9ecee495b34b6a1d2abfd0f35bb7aeb64178 Mon Sep 17 00:00:00 2001 From: Kyotaro Horiguchi Date: Fri, 1 Jul 2022 11:38:34 +0900 Subject: [PATCH 1/2] Use permanent backup-abort call back in perform_base_backup --- src/backend/replication/basebackup.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 95440013c0..e4345dbff2 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -255,19 +255,14 @@ perform_base_backup(basebackup_options *opt, bbsink *sink) total_checksum_failures = 0; basebackup_progress_wait_checkpoint(); + + register_persistent_abort_backup_handler(); + state.startptr = do_pg_backup_start(opt->label, opt->fastcheckpoint, &state.starttli, labelfile, &state.tablespaces, tblspc_map_file); - /* - * Once do_pg_backup_start has been called, ensure that any failure causes - * us to abort the backup so we don't "leak" a backup counter. For this - * reason, *all* functionality between do_pg_backup_start() and the end of - * do_pg_backup_stop() should be inside the error cleanup block! - */ - - PG_ENSURE_ERROR_CLEANUP(do_pg_abort_backup, BoolGetDatum(false)); { ListCell *lc; tablespaceinfo *ti; @@ -375,8 +370,6 @@ perform_base_backup(basebackup_options *opt, bbsink *sink) basebackup_progress_wait_wal_archive(&state); endptr = do_pg_backup_stop(labelfile->data, !opt->nowait, &endtli); } - PG_END_ENSURE_ERROR_CLEANUP(do_pg_abort_backup, BoolGetDatum(false)); - if (opt->includewal) { -- 2.31.1