Bug #70899 | unnecessary buf_flush_list() during recovery | ||
---|---|---|---|
Submitted: | 13 Nov 2013 16:39 | Modified: | 7 May 2014 19:24 |
Reporter: | Inaam Rana (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S2 (Serious) |
Version: | 5.6.14 | OS: | Any |
Assigned to: | CPU Architecture: | Any |
[13 Nov 2013 16:39]
Inaam Rana
[13 Nov 2013 17:49]
Inaam Rana
I should clarify that I believe recv_needed_recovery check is safe because in trx_sys_create_rsegs() we create rsegs iff recv_needed_recovery is not set.
[14 Nov 2013 18:10]
Sveta Smirnova
Thank you for the report. Verified as described using code analysis.
[7 May 2014 19:24]
Daniel Price
Fixed as of 5.6.20, 5.7.5 and here's the changelog entry: The fix for Bug#16418661 added superfluous "buf_flush_list()" logic to "InnoDB" startup code. Thank you for the bug report.
[6 Aug 2014 17:14]
Laurynas Biveinis
$ bzr log -n0 -r 5922 ------------------------------------------------------------ revno: 5922 committer: Satya Bodapati <satya.bodapati@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2014-05-07 19:36:11 +0530 message: BUG#17798076 - BUG#16418661 CLEANUP: REMOVE UNNECESSARY BUF_FLUSH_LIST() DURING RECOVERY Why and when the extra buf_flush_list() was added? -------------------------------------------------- The extra buf_flush_list() was added as part of rb#2293. The testcase for rb#2293 failed randomly reporting inconsistent number of undo tablespaces. MTR didn't provide a way to use custom innodb_data_file_path, innodb_undo_tablespaces. See Bug#17059436 So the workaround is to use "--exec $MYSQLD --args my.cnf" on a empty data directory. This will create necessary files and aborts after that. The extra flush made sure that correct the number of undo tablespaces reported. This is not correct because the changes are already covered by redo. So the the ideal solution would be have been to run "--exec $MYSQLD on the datadir" again to apply redo or allow the bootstrapping to finish properly and exit. Fix: ---- Remove uncessary flush. Fix the inconsistent number of undo tablespaces issue by passing '--skip-grant-tables --innodb-unkown-parameter' to $MYSQLD. This would allow the bootstrapping to finish and properly exit. Approved by Marko, Kevin. rb#5234, rb#5320