diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-05-18 13:26:48 +0200 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2022-05-18 13:26:48 +0200 |
commit | b7ffccf49b5563d3078359bddf438c9d20674513 (patch) | |
tree | 16ad736076c9b1f794e9e344d8b47a8ea9a7fe49 /extra/mariabackup | |
parent | 5bfd9e51b35b5e538254860c425e9759c2e1f5fa (diff) | |
parent | 99a433ed1cc2cebad93d6ece2b65691f2f49d3ea (diff) | |
download | mariadb-git-mariadb-10.8.3.tar.gz |
Merge branch '10.7' into 10.8mariadb-10.8.3
Diffstat (limited to 'extra/mariabackup')
-rw-r--r-- | extra/mariabackup/xtrabackup.cc | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 7cccd590cc1..2b782fb377b 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> @@ -4689,13 +4690,6 @@ fail: goto 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; - } - log_sys.create(); /* get current checkpoint_lsn */ @@ -4705,10 +4699,6 @@ fail: msg("Error: cannot read redo log header"); unlock_and_fail: mysql_mutex_unlock(&recv_sys.mutex); -free_and_fail: - aligned_free(const_cast<byte*>(field_ref_zero)); - field_ref_zero = nullptr; - goto fail; } if (!log_sys.is_latest()) { @@ -4725,7 +4715,7 @@ free_and_fail: && (my_mkdir(xtrabackup_extra_lsndir,0777,MYF(0)) < 0)) { msg("Error: cannot mkdir %d: %s\n", my_errno, xtrabackup_extra_lsndir); - goto free_and_fail; + goto fail; } /* create target dir if not exist */ @@ -4733,13 +4723,13 @@ free_and_fail: && (my_mkdir(xtrabackup_target_dir,0777,MYF(0)) < 0)){ msg("Error: cannot mkdir %d: %s\n", my_errno, xtrabackup_target_dir); - goto free_and_fail; + goto fail; } xtrabackup_init_datasinks(); if (!select_history()) { - goto free_and_fail; + goto fail; } /* open the log file */ @@ -4748,7 +4738,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 */ @@ -4757,7 +4747,7 @@ free_and_fail: /* Write log header*/ if (ds_write(dst_log_file, log_hdr_buf, 12288)) { msg("error: write to logfile failed"); - goto free_and_fail; + goto fail; } log_copying_running = true; /* start io throttle */ @@ -4774,7 +4764,7 @@ free_and_fail: msg("merror: xb_load_tablespaces() failed with" " error %s.", ut_strerr(err)); log_copying_running = false; - goto free_and_fail; + goto fail; } /* copy log file by current position */ @@ -4788,7 +4778,7 @@ free_and_fail: if (log_copy_failed) { log_copying_running = false; - goto free_and_fail; + goto fail; } DBUG_MARIABACKUP_EVENT("before_innodb_log_copy_thread_started", {}); @@ -4798,7 +4788,7 @@ free_and_fail: /* FLUSH CHANGED_PAGE_BITMAPS call */ if (!flush_changed_page_bitmaps()) { - goto free_and_fail; + goto fail; } ut_a(xtrabackup_parallel > 0); @@ -4865,9 +4855,6 @@ free_and_fail: 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; } @@ -7055,6 +7042,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); |