memtx: force async snapshot transactions
Snapshot rows contain not real LSNs. Instead their LSNs are signatures, ordinal numbers. Rows in the snap have LSNs from 1 to the number of rows. This is because LSNs are not stored with every tuple in the storages, and there is no way to store real LSNs in the snapshot. These artificial LSNs broke the synchronous replication limbo. After snap recovery is done, limbo vclock was broken - it contained numbers not related to reality, and affected by rows from local spaces. Also the recovery could stuck because ACKs in the limbo stopped working after a first row - the vclock was set to the final signature right away. This patch makes all snapshot recovered rows async. Because they are confirmed by definition. So now the limbo is not involved into the snapshot recovery. Closes #5298
Showing
- src/box/memtx_engine.c 5 additions, 0 deletionssrc/box/memtx_engine.c
- test/replication/gh-5298-qsync-recovery-snap.result 100 additions, 0 deletionstest/replication/gh-5298-qsync-recovery-snap.result
- test/replication/gh-5298-qsync-recovery-snap.test.lua 48 additions, 0 deletionstest/replication/gh-5298-qsync-recovery-snap.test.lua
Loading
Please register or sign in to comment