Memtx DDL fails with "Transaction has been aborted by conflict"
Basically we observe that creating temporary
space on replica forces <space_object>:format(<my new format>)
to fail with transaction has been aborted by error
I am running Tarantool 2.11.2-98-gd7d27d3b0
.
To reproduce run 2 Tarantool instances with the following scripts:
instanceA.lua
instanceB.lua
Also I am attaching corresponding logs:
instanceA.log
instanceB.log
Take a look at instance B log:
2024-02-13 23:35:15.661 [50329] main/103/instanceB.lua memtx_tx.c:697 W> Transaction committing DDL (id=2001465) has aborted another TX (id=2001464)
2024-02-13 23:35:16.033 [50329] main/110/applier/localhost:3301 I> can't read row
2024-02-13 23:35:16.033 [50329] main/110/applier/localhost:3301 txn.h:566 E> ER_TRANSACTION_CONFLICT: Transaction has been aborted by conflict
I believe that any DDL that involves temporary
tables should not cause any side effects in replication.
I believe that memtx_tx_abort_all_for_ddl
(link) function and changes required by MVCC engine are the one to blame
Edited by Дмитрий Кольцов