You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bug#26696448 REPLAY LOG RECORD CAUSE MYSQLD CRASH DURING ONLINE DDL
Problem
=======
mysqld crashed while rebuilding a table if the log record is split
across two blocks. This problem occurs only if the last partial
record happens to be the last record to be applied.
Analysis
========
The problem occurred when a log record is split across two blocks,
and it also happens to be the last record to be replayed. A partial
record is replayed after it is read completely from the next block.
Only after the partial record is read and applied, the next record
in the block is applied.
The current code wrongly assumes that there are multiple records
in the block, which also has the partial record from the previous
block. The crash happens because of the assert which assumes that
there we are not at the end of the log after replaying the last
partial record.
In case, there is a record after the last partial record, the code
executes successfully as there is at least one record to be applied
after the last partial record and hence, end of log is not yet
reached.
Fix
===
Removed the assert and marked the log as all done. This causes the
log replay to end gracefully.
[ #rb 18694 Reviewed by Deb ]
0 commit comments