-
Annamalai Gurusami authored
Problem #1: The function row_vers_impl_x_locked_low() wrongly identifies a transaction to hold an implicit x lock on a secondary index, which is orphaned. Orphaned means that the secondary index is delete marked and purgeable and does not have its associated clustered index record. Solution #1: Added an extra check in row_vers_impl_x_locked_low() to detect this situation and confirm that the transaction does not hold an implicit x lock on the record. Problem #2: The active transaction was removed from trx_sys->rw_trx_set prematurely. Solution #2: The trx was removed from trx_sys->rw_trx_set only after the trx state change and release of all trx locks. rb#4291 approved by Marko, Yasufumi, Sunny.
Annamalai Gurusami authoredProblem #1: The function row_vers_impl_x_locked_low() wrongly identifies a transaction to hold an implicit x lock on a secondary index, which is orphaned. Orphaned means that the secondary index is delete marked and purgeable and does not have its associated clustered index record. Solution #1: Added an extra check in row_vers_impl_x_locked_low() to detect this situation and confirm that the transaction does not hold an implicit x lock on the record. Problem #2: The active transaction was removed from trx_sys->rw_trx_set prematurely. Solution #2: The trx was removed from trx_sys->rw_trx_set only after the trx state change and release of all trx locks. rb#4291 approved by Marko, Yasufumi, Sunny.
Loading