memtx: do not rollback prepared statements on DDL
Currently, when DDL is being committed, we delete all the stories and rollback prepared delete statements. The problem is such rollback is likely to fail because of assertion. When transaction is rolled back, all the statements are rolled back in reversed order, but when rollback happened because of DDL, order is not specified and some invariants are violated. Let's simply unlink delete statement instead of rollback. Rollback does two things: unlink delete statement and abort readers (including gaps) of prepared stories. The commit actually drops the second part - it's safe because after the previous commits we delete stories right after aborting all concurrent transactions so there is no need to abort anything anymore. Part of #10146 Closes #10474 NO_CHANGELOG=later NO_DOC=bugfix (cherry picked from commit 6a11224c85c1be28e7d1570cd4ba01efc033c34f)
Loading
Please register or sign in to comment