[Tarantool-patches] [PATCH 1/1] qsync: handle async txns right during CONFIRM
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Fri May 28 22:13:18 MSK 2021
Hi! Thanks for the review!
>> diff --git a/src/box/txn_limbo.c b/src/box/txn_limbo.c
>> index f287369a2..05f0bf30a 100644
>> --- a/src/box/txn_limbo.c
>> +++ b/src/box/txn_limbo.c
>> @@ -389,6 +389,27 @@ txn_limbo_read_confirm(struct txn_limbo *limbo, int64_t lsn)
>> */
>> if (e->lsn == -1)
>> break;
>> + } else if (e->txn->signature < 0) {
>> + /*
>> + * A transaction might be covered by the CONFIRM even if
>> + * it is not written to WAL yet when it is an async
>> + * transaction. It could be created just when the
>> + * CONFIRM was being written to WAL.
>> + */
>> + assert(e->txn->status == TXN_PREPARED);
>> + /*
>> + * Let it complete normally as a plain transaction.
>> + */
>> + txn_clear_flags(e->txn, TXN_WAIT_SYNC | TXN_WAIT_ACK);
>
> AFAICS it's enough to clear WAIT_SYNC here.
> Asynchronous transactions never have WAIT_ACK set, do they?
Yes, sorry, I was in a big hurry when sent this patch. Fixed:
====================
@@ -400,7 +400,7 @@ txn_limbo_read_confirm(struct txn_limbo *limbo, int64_t lsn)
/*
* Let it complete normally as a plain transaction.
*/
- txn_clear_flags(e->txn, TXN_WAIT_SYNC | TXN_WAIT_ACK);
+ txn_clear_flags(e->txn, TXN_WAIT_SYNC);
txn_limbo_remove(limbo, e);
More information about the Tarantool-patches
mailing list