recovery: handle local sync txns during recovery
Recovery uses txn_commit_async() so as not to block the recovery process when a synchronous transaction is met. They are either committed later when CONFIRM is read, or stay in the limbo after recovery. However txn_commit_async() assumed it is used for remote transactions only, and had some assertions about that. One of them crashed in case master restarted and had any synchronous transaction in WAL. The patch makes txn_commit_async() not assume anything about transaction's origin. Closes #5163
Showing
- src/box/txn.c 13 additions, 2 deletionssrc/box/txn.c
- src/box/txn_limbo.c 10 additions, 0 deletionssrc/box/txn_limbo.c
- src/box/txn_limbo.h 14 additions, 0 deletionssrc/box/txn_limbo.h
- test/replication/gh-5163-qsync-restart-crash.result 32 additions, 0 deletionstest/replication/gh-5163-qsync-restart-crash.result
- test/replication/gh-5163-qsync-restart-crash.test.lua 14 additions, 0 deletionstest/replication/gh-5163-qsync-restart-crash.test.lua
Please register or sign in to comment