[Tarantool-patches] [PATCH 8/8] replication: write and read CONFIRM entries

Leonid Vasiliev lvasiliev at tarantool.org
Thu Jun 18 14:32:45 MSK 2020


Add commit:

replication: fix for "replication: write and read CONFIRM entries"

As I understand it, an entry is deleted in txn_limbo_wait_complete(),
so don't delete it from the queue in txn_limbo_ack().

[TO BE SQUASHED INTO THE PREVIOUS COMMIT]

diff --git a/src/box/txn_limbo.c b/src/box/txn_limbo.c
index 03cbed7..a07ed24 100644
--- a/src/box/txn_limbo.c
+++ b/src/box/txn_limbo.c
@@ -198,7 +198,7 @@ txn_limbo_ack(struct txn_limbo *limbo, uint32_t 
replica_id, int64_t lsn)
         assert(limbo->instance_id != REPLICA_ID_NIL);
         int64_t prev_lsn = vclock_get(&limbo->vclock, replica_id);
         vclock_follow(&limbo->vclock, replica_id, lsn);
-       struct txn_limbo_entry *e, *tmp;
+       struct txn_limbo_entry *e;
         struct txn_limbo_entry *last_quorum = NULL;
         rlist_foreach_entry(e, &limbo->queue, in_queue) {
                 if (e->lsn <= prev_lsn)
@@ -220,8 +220,7 @@ txn_limbo_ack(struct txn_limbo *limbo, uint32_t 
replica_id, int64_t lsn)
                  * Wakeup all the entries in direct order as soon
                  * as confirmation message is written to WAL.
                  */
-               rlist_foreach_entry_safe(e, &limbo->queue, in_queue, tmp) {
-                       rlist_del_entry(e, in_queue);
+               rlist_foreach_entry(e, &limbo->queue, in_queue) {
                         fiber_wakeup(e->txn->fiber);
                         if (e == last_quorum)
                                 break;



More information about the Tarantool-patches mailing list