Merge lp:~laurynas-biveinis/percona-xtrabackup/BT-28340-1164979-2.0 into lp:percona-xtrabackup/2.0

Proposed by Laurynas Biveinis
Status: Merged
Approved by: Alexey Kopytov
Approved revision: no longer in the source branch.
Merged at revision: 530
Proposed branch: lp:~laurynas-biveinis/percona-xtrabackup/BT-28340-1164979-2.0
Merge into: lp:percona-xtrabackup/2.0
Diff against target: 25 lines (+8/-0)
1 file modified
src/xtrabackup.cc (+8/-0)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-xtrabackup/BT-28340-1164979-2.0
Reviewer Review Type Date Requested Status
Alexey Kopytov (community) Approve
Review via email: mp+157999@code.launchpad.net

Description of the change

BT 28340

http://jenkins.percona.com/job/percona-xtrabackup-2.0-param/386/

Fix bug 1164979 (xtrabackup_56 can fail on prepare if log files > 4G
used on source server).

The issue is that log checkpoint offset field has been extended to 64
bits to support log files > 4G, yet XtraBackup would overwrite only
the lower 32 bits. If the higher 32 bits happened to be non-zero,
incorrect log offsets would be used for InnoDB recovery.

Fixed by overwriting the higher 32 bits with zero on MySQL 5.6.

To post a comment you must log in.
Revision history for this message
Alexey Kopytov (akopytov) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/xtrabackup.cc'
--- src/xtrabackup.cc 2013-04-03 22:53:49 +0000
+++ src/xtrabackup.cc 2013-04-10 06:55:29 +0000
@@ -6349,6 +6349,10 @@
6349 + LOG_CHECKPOINT_OFFSET_LOW32,6349 + LOG_CHECKPOINT_OFFSET_LOW32,
6350 LOG_FILE_HDR_SIZE + (ulint) ut_dulint_minus(max_lsn,6350 LOG_FILE_HDR_SIZE + (ulint) ut_dulint_minus(max_lsn,
6351 ut_dulint_align_down(max_lsn,OS_FILE_LOG_BLOCK_SIZE)));6351 ut_dulint_align_down(max_lsn,OS_FILE_LOG_BLOCK_SIZE)));
6352#if MYSQL_VERSION_ID >= 50600
6353 mach_write_to_4(log_buf + LOG_CHECKPOINT_1
6354 + LOG_CHECKPOINT_OFFSET_HIGH32, 0);
6355#endif
6352#ifdef XTRADB_BASED6356#ifdef XTRADB_BASED
6353 MACH_WRITE_64(log_buf + LOG_CHECKPOINT_1 + LOG_CHECKPOINT_ARCHIVED_LSN,6357 MACH_WRITE_64(log_buf + LOG_CHECKPOINT_1 + LOG_CHECKPOINT_ARCHIVED_LSN,
6354 (ib_uint64_t)(LOG_FILE_HDR_SIZE + ut_dulint_minus(max_lsn,6358 (ib_uint64_t)(LOG_FILE_HDR_SIZE + ut_dulint_minus(max_lsn,
@@ -6366,6 +6370,10 @@
6366 + LOG_CHECKPOINT_OFFSET_LOW32,6370 + LOG_CHECKPOINT_OFFSET_LOW32,
6367 LOG_FILE_HDR_SIZE + (ulint) ut_dulint_minus(max_lsn,6371 LOG_FILE_HDR_SIZE + (ulint) ut_dulint_minus(max_lsn,
6368 ut_dulint_align_down(max_lsn,OS_FILE_LOG_BLOCK_SIZE)));6372 ut_dulint_align_down(max_lsn,OS_FILE_LOG_BLOCK_SIZE)));
6373#if MYSQL_VERSION_ID >= 50600
6374 mach_write_to_4(log_buf + LOG_CHECKPOINT_2
6375 + LOG_CHECKPOINT_OFFSET_HIGH32, 0);
6376#endif
6369#ifdef XTRADB_BASED6377#ifdef XTRADB_BASED
6370 MACH_WRITE_64(log_buf + LOG_CHECKPOINT_2 + LOG_CHECKPOINT_ARCHIVED_LSN,6378 MACH_WRITE_64(log_buf + LOG_CHECKPOINT_2 + LOG_CHECKPOINT_ARCHIVED_LSN,
6371 (ib_uint64_t)(LOG_FILE_HDR_SIZE + ut_dulint_minus(max_lsn,6379 (ib_uint64_t)(LOG_FILE_HDR_SIZE + ut_dulint_minus(max_lsn,

Subscribers

People subscribed via source and target branches