Merge lp:~akopytov/percona-xtrabackup/bug1255476 into lp:percona-xtrabackup/2.2
Status: | Merged |
---|---|
Approved by: | Alexey Kopytov |
Approved revision: | no longer in the source branch. |
Merged at revision: | 4977 |
Proposed branch: | lp:~akopytov/percona-xtrabackup/bug1255476 |
Merge into: | lp:percona-xtrabackup/2.2 |
Diff against target: |
15 lines (+4/-1) 1 file modified
storage/innobase/page/page0cur.cc (+4/-1) |
To merge this branch: | bzr merge lp:~akopytov/percona-xtrabackup/bug1255476 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Alexey Kopytov (community) | Approve | ||
Review via email: mp+221983@code.launchpad.net |
Description of the change
Bug #1255476: InnoDB redo log incompatibility with 5.1/5.5 server and
An upstream fix in MySQL 5.6.11 introduced a change that can make
InnoDB crash on recovery when replaying redo logs created on earlier
versions.
The fix changed page_cur_
even if enough space is available in the modification log on a
compressed page when an insert to the corresponding uncompressed page
would not succeed.
What the fix did not take into account is compatibility with earlier
server versions which do not perform such operation (i.e. 5.1, 5.5 and
pre-5.6.11).
When replaying such an insert (i.e. the one when page_zip_
returned ‘true’ but reorg_before_insert is also ‘true’), no page
reorganization is performed in assumption that it has already been
covered by the previous redo log entries (which is the case when
replaying a redo log created with 5.6.11+):
if (recv_recovery_
/* Insert into the uncompressed page only.
The page reorganization or creation that we
would attempt outside crash recovery would
have been covered by a previous redo log record. */
}
However, there are no corresponding previous records in redo logs
created by 5.1/5.5/5.6.10-. Which led to inconsistencies between
compressed and uncompressed page images and release/debug assertion
failures on subsequent page operations.
Fixed by changing page_cur_
reorganization before insert on recovery. It is never required when
replaying a 5.6.11+ log anyway, and for previous versions it breaks
backward compatibility.
http:// jenkins. percona. com/view/ PXB%202. 2/job/percona- xtrabackup- 2.2-param/ 150/