[Tarantool-patches] [PATCH 6/7] iproto: implement interactive transactions over iproto streams
vdavydov at tarantool.org
Mon Aug 9 13:39:01 MSK 2021
On Fri, Aug 06, 2021 at 03:59:30PM +0300, Vladimir Davydov wrote:
> On Thu, Aug 05, 2021 at 09:17:44PM +0300, mechanik20051988 wrote:
> > + /*
> > + * When we do any operations (which are written to `wal`)
> > + * outside of transaction, we consider each such operation
> > + * as a small transaction and write it to `wal` immediately.
> > + * When operation is performed as part of transaction, we
> > + * write all transaction to `wal` at the commit. In this case,
> > + * `is_commit` flag will be set when writing to `wal` for the
> > + * last operation in transaction, the rest operations must have
> > + * this flag set to false, to mark that they all belongs to the
> > + * same transaction.
> > + */
> > + if (txn != NULL)
> > + msg->header.is_commit = false;
> AFAIU this flag is used only when a statement is written to WAL.
> Please remove.
TX reuses request::header if it is set so is_commit would propagate to
WAL and break recovery, which isn't what we want so this is technically
correct. However, I think we should clear the whole request::header
instead - we don't need it to apply a request, we only need it for
replication. Will send a patch in reply to this email.
More information about the Tarantool-patches