diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-09-21 17:42:02 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-09-21 17:42:02 +0300 |
commit | 952a028a52f6e1b7067efa25b1a7d57721a8f3f6 (patch) | |
tree | 7d3c3b3cff2e8f7efd280f3bf95064a352fa1783 /extra/mariabackup | |
parent | 3a423088ac4f854448803d8af14e0d176b08f0af (diff) | |
parent | 2cf489d4305227115177b435ec536fe8f84daa6b (diff) | |
download | mariadb-git-952a028a52f6e1b7067efa25b1a7d57721a8f3f6.tar.gz |
Merge 10.3 into 10.4
We omit commit a3bdce8f1e268e3ac57644faf91c9c5ad43f5291
and commit a0e2a293bcc25fb10888fd00bd63bce04c195524
because they would make the test galera_3nodes.galera_gtid_2_cluster
fail and disable it.
Diffstat (limited to 'extra/mariabackup')
-rw-r--r-- | extra/mariabackup/xtrabackup.cc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 69005b69b63..76c90152c39 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -2768,6 +2768,7 @@ static bool xtrabackup_copy_logfile(bool last = false) ut_a(dst_log_file != NULL); ut_ad(recv_sys.is_initialised()); + bool overwritten_block = false; lsn_t start_lsn; lsn_t end_lsn; @@ -2793,6 +2794,12 @@ static bool xtrabackup_copy_logfile(bool last = false) } if (lsn == start_lsn) { + overwritten_block= !recv_sys.found_corrupt_log + && (innodb_log_checksums || log_sys.log.is_encrypted()) + && log_block_calc_checksum_crc32(log_sys.buf) == + log_block_get_checksum(log_sys.buf) + && log_block_get_hdr_no(log_sys.buf) > + log_block_convert_lsn_to_no(start_lsn); start_lsn = 0; } else { mutex_enter(&recv_sys.mutex); @@ -2803,9 +2810,15 @@ static bool xtrabackup_copy_logfile(bool last = false) log_mutex_exit(); if (!start_lsn) { - die(recv_sys.found_corrupt_log - ? "xtrabackup_copy_logfile() failed: corrupt log." - : "xtrabackup_copy_logfile() failed."); + const char *reason = recv_sys.found_corrupt_log + ? "corrupt log." + : (overwritten_block + ? "redo log block is overwritten, please increase redo log size with innodb_log_file_size parameter." + : ((innodb_log_checksums || log_sys.log.is_encrypted()) + ? "redo log block checksum does not match." + : "unknown reason as innodb_log_checksums is switched off and redo" + " log is not encrypted.")); + die("xtrabackup_copy_logfile() failed: %s", reason); return true; } } while (start_lsn == end_lsn); |