Merge lp:~akopytov/percona-xtrabackup/bugs-1177206-and-1187071-2.0 into lp:percona-xtrabackup/2.0
Status: | Merged |
---|---|
Approved by: | Laurynas Biveinis |
Approved revision: | no longer in the source branch. |
Merged at revision: | 564 |
Proposed branch: | lp:~akopytov/percona-xtrabackup/bugs-1177206-and-1187071-2.0 |
Merge into: | lp:percona-xtrabackup/2.0 |
Diff against target: |
366 lines (+137/-44) 2 files modified
patches/innodb56.patch (+91/-22) src/xtrabackup.cc (+46/-22) |
To merge this branch: | bzr merge lp:~akopytov/percona-xtrabackup/bugs-1177206-and-1187071-2.0 |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis (community) | Approve | ||
Review via email: mp+170240@code.launchpad.net |
Description of the change
Bug #1177206: InnoDB: Assertion failure in thread <nr> in file
Bug #1187071: xb 2.1 against ps 5.6 gives Error: Tablespace is not
The problems are related, so fixing in a single revision.
The problem in bug #1187071 was a difference in behavior between InnoDB
5.5- and 5.6 codebases in cases when a newly created tablespace has
uninitialized first page at the time when XtraBackup opens it while
creating a list of tablespaces to backup. 5.1/5.5 InnoDB code would just
complain about tablespace ID being non-sensible and omit it from the
backup. But in 5.6 it fails with an error in such a case.
A related problem in bug #1177206 was that
xb_
called before log copying was started. This could lead to a race between
the datafiles state in the resulting backup and xtrabackup_logfile: a
tablespace created at a sensitive time would be missing in both the
backup itself and as the corresponding MLOG_FILE_CREATE* log record in
xtrabackup_
either. This problem has existed since the very first XtraBackup
version.
Fixed by:
1. Ignoring tablespaces with uninitialized pages on xtrabackup startup
for InnoDB 5.6 codebase to match the behavior of InnoDB 5.5-.
2. Moving the call to xb_data_
to a later stage so that it is only called after the log copying is
started. This involved a minor code refactoring, since
xb_
subsystem (which is also required by the log copying code) and actually
populating fil_system. We now have 2 separate functions:
xb_
xb_
http://
Was
13 ++ fsp_open_info* fsp; create_ success;
14 ++ ulong minimum_size;
15 ++ ibool file_space_
intentional?
It looks like it's unrelated to the fix, just increases the patch size.