From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 13 Jun 2019 17:12:56 +0300 From: Vladimir Davydov Subject: Re: [tarantool-patches] [PATCH v3 06/14] txn: get rid of fiber_gc from txn_rollback Message-ID: <20190613141256.vktkk4qea4wyock4@esperanza> References: <95ba261a4768ec78f5e94596cdeb215ee1068cc2.1560112747.git.georgy@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <95ba261a4768ec78f5e94596cdeb215ee1068cc2.1560112747.git.georgy@tarantool.org> To: Georgy Kirichenko Cc: tarantool-patches@freelists.org List-ID: On Sun, Jun 09, 2019 at 11:44:35PM +0300, Georgy Kirichenko wrote: > Don't touch a fiber gc storage on a transaction rollback explicitly. > This relaxes dependencies between fiber and transaction life cycles. > > Prerequisites: #1254 > --- > src/box/applier.cc | 8 +++++--- > src/box/box.cc | 14 +++++++++----- > src/box/call.c | 22 ++++++++++++++++------ > src/box/memtx_engine.c | 3 ++- > src/box/txn.c | 35 +++++++++++++++++------------------ > src/box/txn.h | 8 ++++++-- > src/box/vy_scheduler.c | 10 +++++++--- > 7 files changed, 62 insertions(+), 38 deletions(-) > > diff --git a/src/box/applier.cc b/src/box/applier.cc > index e3203a4c8..5a92f6109 100644 > --- a/src/box/applier.cc > +++ b/src/box/applier.cc > @@ -190,7 +190,7 @@ apply_initial_join_row(struct xrow_header *row) > fiber_gc(); > return rc; > rollback: > - txn_rollback(); > + txn_rollback(txn); > return -1; > } > > @@ -422,7 +422,8 @@ applier_join(struct applier *applier) > if (txn == NULL) > diag_raise(); > if (apply_row(&row) != 0) { > - txn_rollback(); > + txn_rollback(txn); > + fiber_gc(); > diag_raise(); > } > if (txn_commit(txn) != 0) > @@ -625,7 +626,8 @@ applier_apply_tx(struct stailq *rows) > return txn_commit(txn); > > rollback: > - txn_rollback(); > + txn_rollback(txn); > + fiber_gc(); > return -1; > } As I wrote earlier, I'm pretty convinced we don't need to call fiber_gc() after txn_commit/rollback at all. Please consider removing it in a separate patch.