[Tarantool-patches] [PATCH v4 09/16] box: split promote() into reasonable parts
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Tue Jul 27 02:44:33 MSK 2021
Thanks for the fixes!
> diff --git a/src/box/box.cc b/src/box/box.cc
> index 85fac08bb..d83c30918 100644
> --- a/src/box/box.cc
> +++ b/src/box/box.cc
> @@ -1527,6 +1527,140 @@ box_wait_quorum(uint32_t lead_id, int64_t target_lsn, int quorum,
<...>
> +
> +/**
> + * A helper to wait until all limbo entries are ready to be confirmed, i.e.
> + * written to WAL and have gathered a quorum of ACKs from replicas.
> + * Return lsn of the last limbo entry on success, -1 on error.
> + */
> +static int64_t
> +box_wait_limbo_acked(void)
> +{
> + if (txn_limbo_is_empty(&txn_limbo))
> + return txn_limbo.confirmed_lsn;
> +
> + uint64_t promote_term = txn_limbo.promote_greatest_term;
> + int quorum = replication_synchro_quorum;
> + struct txn_limbo_entry *last_entry;
> + last_entry = txn_limbo_last_synchro_entry(&txn_limbo);
> + /* Wait for the last entries WAL write. */
> + if (last_entry->lsn < 0) {
> + int64_t tid = last_entry->txn->id;
> +
> + if (wal_sync(NULL) < 0)
Could you please make it `!= 0`? To be consistent with the
other places and to emphasize the result is binary - either an
error or success.
More information about the Tarantool-patches
mailing list