vinyl: do not abort unrelated transactions on DDL
Since commit 8f4be322 ("txm: disallow yields after DDL operation in TX"), any DDL operation aborts **all** active transactions, even those that wouldn't be affected by it anyway, see `memtx_engine_prepare()`, `memtx_tx_abort_all_for_ddl()`. Actually, there's no need to do that in Vinyl because it properly handles concurrent DDL operations, see commit d3e12369 ("vinyl: abort affected transactions when space is removed from cache"). Let's skip Vinyl transactions from consideration by marking the Vinyl engine with a special flag. Closes #10375 NO_DOC=bug fix (cherry picked from commit f5f061d051dc6268949bfcb141d211142282578d)
Showing
- changelogs/unreleased/gh-10375-vy-do-not-abort-unrelated-tx-on-ddl.md 3 additions, 0 deletions...nreleased/gh-10375-vy-do-not-abort-unrelated-tx-on-ddl.md
- src/box/engine.h 6 additions, 0 deletionssrc/box/engine.h
- src/box/memtx_tx.c 2 additions, 0 deletionssrc/box/memtx_tx.c
- src/box/txn.c 9 additions, 1 deletionsrc/box/txn.c
- src/box/txn.h 6 additions, 0 deletionssrc/box/txn.h
- src/box/vinyl.c 1 addition, 0 deletionssrc/box/vinyl.c
- test/engine-luatest/gh_10375_ddl_does_not_abort_unrelated_transactions_test.lua 65 additions, 0 deletions..._10375_ddl_does_not_abort_unrelated_transactions_test.lua
Loading
Please register or sign in to comment