-
Marko Mäkelä authored
If the record is not found during rollback, attempt to insert it, unless a duplicate key error would occur. If a duplicate key error would occur, flag the index corrupted in the data dictionary cache. The condition is perfectly normal during online secondary index creation. We have seen it also during stress testing that does not involve online index creation, but the root cause of that bug is unknown. row_undo_mod_del_unmark_sec_and_undo_update(): Suppress the log printout about missing record, when the index was being created online. Attempt to insert the missing record. Return DB_DUPLICATE_KEY when this would result in inserting a duplicate. row_undo_mod_sec_flag_corrupted(): New auxiliary function, for flagging an index corrupted during rollback. row_undo_mod_del_mark_sec(): Flag the index corrupted on DB_DUPLICATE_KEY, but set err=DB_SUCCESS so that the rollback will carry on as usual on the other indexes. row_undo_mod_parse_undo_rec(): Remove a redundant parameter. row_ins(), row_upd(): Add test instrumentation. dict_set_corrupted(): Acquire the data dictionary latches when needed. Add a context parameter, so that we can log where the corruption was noticed. rb:1405 approved by Jimmy Yang
Marko Mäkelä authoredIf the record is not found during rollback, attempt to insert it, unless a duplicate key error would occur. If a duplicate key error would occur, flag the index corrupted in the data dictionary cache. The condition is perfectly normal during online secondary index creation. We have seen it also during stress testing that does not involve online index creation, but the root cause of that bug is unknown. row_undo_mod_del_unmark_sec_and_undo_update(): Suppress the log printout about missing record, when the index was being created online. Attempt to insert the missing record. Return DB_DUPLICATE_KEY when this would result in inserting a duplicate. row_undo_mod_sec_flag_corrupted(): New auxiliary function, for flagging an index corrupted during rollback. row_undo_mod_del_mark_sec(): Flag the index corrupted on DB_DUPLICATE_KEY, but set err=DB_SUCCESS so that the rollback will carry on as usual on the other indexes. row_undo_mod_parse_undo_rec(): Remove a redundant parameter. row_ins(), row_upd(): Add test instrumentation. dict_set_corrupted(): Acquire the data dictionary latches when needed. Add a context parameter, so that we can log where the corruption was noticed. rb:1405 approved by Jimmy Yang
Loading