summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2022-05-12 08:11:57 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2022-05-12 08:11:57 +0300
commitdaa2680c78d155868c5d0d14345669ecea13069b (patch)
tree666e9f06f6eb8a05804cea63020c99b62d1bee57 /extra
parent7da0f30ccc5446cf6c30289e51d461b7f0595891 (diff)
parent3fabdc3ca889db0e490df3a9a48ae527f21eed45 (diff)
downloadmariadb-git-daa2680c78d155868c5d0d14345669ecea13069b.tar.gz
Merge 10.5 into 10.6
Diffstat (limited to 'extra')
-rw-r--r--extra/mariabackup/xtrabackup.cc39
1 files changed, 20 insertions, 19 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index a22e996200a..512c8d21267 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -51,6 +51,7 @@ Street, Fifth Floor, Boston, MA 02110-1335 USA
#include <my_getopt.h>
#include <mysql_com.h>
#include <my_default.h>
+#include <scope.h>
#include <sql_class.h>
#include <fcntl.h>
@@ -4601,13 +4602,6 @@ fail:
}
- if (auto b = aligned_malloc(UNIV_PAGE_SIZE_MAX, 4096)) {
- field_ref_zero = static_cast<byte*>(
- memset_aligned<4096>(b, 0, UNIV_PAGE_SIZE_MAX));
- } else {
- goto fail;
- }
-
{
/* definition from recv_recovery_from_checkpoint_start() */
ulint max_cp_field;
@@ -4624,10 +4618,6 @@ reread_log_header:
msg("Error: cannot read redo log header");
unlock_and_fail:
mysql_mutex_unlock(&log_sys.mutex);
-free_and_fail:
- aligned_free(const_cast<byte*>(field_ref_zero));
- field_ref_zero = nullptr;
- goto fail;
}
if (log_sys.log.format == 0) {
@@ -4653,7 +4643,7 @@ free_and_fail:
xtrabackup_init_datasinks();
if (!select_history()) {
- goto free_and_fail;
+ goto fail;
}
/* open the log file */
@@ -4662,7 +4652,7 @@ free_and_fail:
if (dst_log_file == NULL) {
msg("Error: failed to open the target stream for '%s'.",
LOG_FILE_NAME);
- goto free_and_fail;
+ goto fail;
}
/* label it */
@@ -4700,7 +4690,7 @@ free_and_fail:
if (ds_write(dst_log_file, log_hdr_buf, LOG_FILE_HDR_SIZE)) {
msg("error: write to logfile failed");
aligned_free(log_hdr_buf);
- goto free_and_fail;
+ goto fail;
}
aligned_free(log_hdr_buf);
@@ -4721,7 +4711,7 @@ free_and_fail:
" error %s.", ut_strerr(err));
fail_before_log_copying_thread_start:
log_copying_running = false;
- goto free_and_fail;
+ goto fail;
}
/* copy log file by current position */
@@ -4744,7 +4734,7 @@ fail_before_log_copying_thread_start:
/* FLUSH CHANGED_PAGE_BITMAPS call */
if (!flush_changed_page_bitmaps()) {
- goto free_and_fail;
+ goto fail;
}
ut_a(xtrabackup_parallel > 0);
@@ -4812,9 +4802,6 @@ fail_before_log_copying_thread_start:
if (opt_log_innodb_page_corruption)
ok = corrupted_pages.print_to_file(MB_CORRUPTED_PAGES_FILE);
- aligned_free(const_cast<byte*>(field_ref_zero));
- field_ref_zero = nullptr;
-
if (!ok) {
goto fail;
}
@@ -6997,6 +6984,20 @@ static int main_low(char** argv)
}
}
+ ut_ad(!field_ref_zero);
+ if (auto b = aligned_malloc(UNIV_PAGE_SIZE_MAX, 4096)) {
+ field_ref_zero = static_cast<byte*>(
+ memset_aligned<4096>(b, 0, UNIV_PAGE_SIZE_MAX));
+ } else {
+ msg("Can't allocate memory for field_ref_zero");
+ return EXIT_FAILURE;
+ }
+
+ auto _ = make_scope_exit([]() {
+ aligned_free(const_cast<byte*>(field_ref_zero));
+ field_ref_zero = nullptr;
+ });
+
/* --backup */
if (xtrabackup_backup && !xtrabackup_backup_func()) {
return(EXIT_FAILURE);