Merge lp:~akopytov/percona-server/bug1162085-5.1 into lp:percona-server/5.1
Status: | Merged |
---|---|
Approved by: | Laurynas Biveinis |
Approved revision: | no longer in the source branch. |
Merged at revision: | 547 |
Proposed branch: | lp:~akopytov/percona-server/bug1162085-5.1 |
Merge into: | lp:percona-server/5.1 |
Diff against target: |
70 lines (+41/-3) 3 files modified
Percona-Server/mysql-test/suite/binlog/r/percona_bug1162085.result (+6/-0) Percona-Server/mysql-test/suite/binlog/t/percona_bug1162085.test (+30/-0) Percona-Server/mysys/mf_cache.c (+5/-3) |
To merge this branch: | bzr merge lp:~akopytov/percona-server/bug1162085-5.1 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis (community) | Approve | ||
Review via email: mp+156355@code.launchpad.net |
Description of the change
Bug #1162085: Percona server 5.5.30-rel30.1.465 reproducable hang
The fix for bug #1070856 that the underlying binlog cache file is always
larger then the offset passed to truncate_
always the case, because a part of the data which has already been
written may be in the IO_CACHE buffer, but not yet on disk.
What happened in the test case was that the server wrote ~48K data into
the binlog cache with 32K written to disk and the remaining part
residing in the IO_CACHE buffer. On the ROLLBACK TO statement the server
called truncate_
my_chsize() actually increased the underlying file by appending 16K worth
of zero bytes. When the remaining 16K bytes were eventually flushed to
disk on COMMIT, my_b_flush_
resulting in the 64K total file size. This in turn led to
MYSQL_
to nonsensical zero offsets in the binlog cache.
Fixed truncate_
underlying cache file is larger than the passed offset.
http://