-
-
Notifications
You must be signed in to change notification settings - Fork 2k
MDEV-37795 - MariaDB start up spits DDL_LOG: Got error 1033 #4552
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 11.8
Are you sure you want to change the base?
Conversation
|
|
|
innodb_fts.crash_recovery,release fails sporadically. In release build it silently disables sync points, which allows server to crash at aribitrary point of DDL, specifically when .frm file is created but not yet written. Subsequent attempt to open such table at recovery (needed to obtain number of high-level indexes) leads to OPEN_FRM_CORRUPTED error rather than something like "file not found" (which is ignored by recovery). Emitted errors were not handler by mtr. Silently ignore newly created corrupt .frm during recovery. High-level indexes were most probably not created at this point. It is still probable that .frm got corrupted after high-level indexes were created. In this case recovery won't be able to handle stale high-level indexes and they will be preserved. This regression was introduced by "d50663198c0 DDL recovery for high-level indexes".
38ef84d to
194bb9d
Compare
|
In what cases would we want not to ignore corrupted frm on DROP? |
Initially I thought about cases listed above: filesystem corruption, some very specific mariadbd malfunction, external tools that access .frm malfunction, whatnot. Two important points here:
Are you leading towards conclusion that corrupt .frm has to be ignored in all cases? |
|
What I mean is, perhaps DROP should always drop the table, even if frm is corrupted? In MDEV-11412 we've made |
|
@vuvova makes sense, I will get this PR updated accordingly. |
innodb_fts.crash_recovery,release fails sporadically. In release build it silently disables sync points, which allows server to crash at aribitrary point of DDL, specifically when .frm file is created but not yet written.
Subsequent attempt to open such table at recovery (needed to obtain number of high-level indexes) leads to OPEN_FRM_CORRUPTED error rather than something like "file not found" (which is ignored by recovery). Emitted errors were not handler by mtr.
Silently ignore newly created corrupt .frm during recovery. High-level indexes were most probably not created at this point.
It is still probable that .frm got corrupted after high-level indexes were created. In this case recovery won't be able to handle stale high-level indexes and they will be preserved.
This regression was introduced by d506631 "DDL recovery for high-level indexes".