[Tarantool-patches] [PATCH 3/8] txn: add TXN_WAIT_ACK flag

Serge Petrenko sergepetrenko at tarantool.org
Mon Jun 22 12:44:04 MSK 2020


21.06.2020 19:25, Vladislav Shpilevoy пишет:
> Thanks for the review!
>
>>>        stailq_foreach_entry(stmt, &txn->stmts, next) {
>>>            if (stmt->has_triggers) {
>>>                txn_init_triggers(txn);
>>>                rlist_splice(&txn->on_commit, &stmt->on_commit);
>>>            }
>>> +        is_sync = is_sync || stmt->space->def->opts.is_sync;
>> Seems like
>> "... || (stmt->space != NULL && stmt->space->def->opts.is_sync);"
>> can be moved here from "replication: make sync transactions wait quorum".
>>
>> LGTM.
> I don't think it is a good idea. At this commit stmt->space can't be
> NULL. This becomes possible only after Sergey P. starts using txns
> to write confirm and rollback entries, which don't relate to any
> space.

Actually, stmt->space is NULL for NOPs.

>
> However I changed this place - I moved is_sync calculation after
> stmt->row == NULL check. So as a read from a sync space wouldn't
> turn the transaction into a synchronous one:
>
> ====================
> commit e29fd482e0954913b87776d0a83ba04ef14683d8
> Author: Vladislav Shpilevoy <v.shpilevoy at tarantool.org>
> Date:   Sun Jun 21 18:12:53 2020 +0200
>
>      txn: don't do sync flag calculation for read statements
>      
>      [TO BE SQUASHED INTO THE PREVIOUS COMMIT]
>
> diff --git a/src/box/txn.c b/src/box/txn.c
> index b50e7c1f8..22591a365 100644
> --- a/src/box/txn.c
> +++ b/src/box/txn.c
> @@ -502,12 +502,13 @@ txn_journal_entry_new(struct txn *txn)
>   			txn_init_triggers(txn);
>   			rlist_splice(&txn->on_commit, &stmt->on_commit);
>   		}
> -		is_sync = is_sync || stmt->space->def->opts.is_sync;
>   
>   		/* A read (e.g. select) request */
>   		if (stmt->row == NULL)
>   			continue;
>   
> +		is_sync = is_sync || stmt->space->def->opts.is_sync;
> +
>   		if (stmt->row->replica_id == 0)
>   			*local_row++ = stmt->row;
>   		else
>
-- 
Serge Petrenko



More information about the Tarantool-patches mailing list