Skip to content
  • Marko Mäkelä's avatar
    8794d06d
    Bug#14707452 RECORD NOT FOUND DURING ROLLBACK AFTER ONLINE CREATE INDEX · 8794d06d
    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
    8794d06d
    Bug#14707452 RECORD NOT FOUND DURING ROLLBACK AFTER ONLINE CREATE INDEX
    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
Loading