Merge lp://staging/~laurynas-biveinis/percona-server/BT-16274-bug1111226-5.1 into lp://staging/percona-server/5.1
Status: | Merged |
---|---|
Approved by: | Stewart Smith |
Approved revision: | no longer in the source branch. |
Merged at revision: | 527 |
Proposed branch: | lp://staging/~laurynas-biveinis/percona-server/BT-16274-bug1111226-5.1 |
Merge into: | lp://staging/percona-server/5.1 |
Diff against target: |
168 lines (+104/-15) 4 files modified
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_page_bmp_debug.result (+23/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_page_bmp_debug-master.opt (+1/-0) Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_page_bmp_debug.test (+56/-0) Percona-Server/storage/innodb_plugin/log/log0online.c (+24/-15) |
To merge this branch: | bzr merge lp://staging/~laurynas-biveinis/percona-server/BT-16274-bug1111226-5.1 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stewart Smith (community) | Approve | ||
George Ormond Lorch III (community) | g2 | Approve | |
Laurynas Biveinis | Pending | ||
Review via email: mp+147066@code.staging.launchpad.net |
This proposal supersedes a proposal from 2013-01-31.
Description of the change
2nd MP: unify 5.1 and 5.5 tests.
http://
Fix bug 1111226 for 5.1
No BT or ST, but 16274 QA
Fix bug 1111226 (Writing larger than 4GB bitmap file fails; bitmap
write error causes heap corruption).
The first issue is incorrect higher 32 bits of write offset
calculation: the 64-bit offset was shifted to the left instead of the
right, fixed trivially.
The second issue is that if a bitmap page write fails (for example,
due to the condition above), then log_online_
prematurely with a return code signalling error. But, if at least one
bitmap page was written successfully, then the written bitmap tree
nodes will be doubly pointed to: from the bitmap tree itself and from
the free node list. This will cause a heap corruption on the log
following thread shutdown (which happens immediatelly in the case of
bitmap write error).
Fixed by keeping iterating over the bitmap tree in case of error, but
skipping the actual write. This way all the tree nodes are moved to
free list for the subsequent cleanup.
Add a write failure injection site and a new testcase
percona_
percona_ changed_ page_bmp_ debug.test is slightly different from 5.5 MP in the way the server restarts are structured and order of: PAGE_BITMAPS;
RESET CHANGED_
CREATE TABLE t1 (x INT) ENGINE=InnoDB;
Is this intentional?