[Tarantool-patches] [PATCH v15 11/11] box/journal: redesign journal operations

Konstantin Osipov kostja.osipov at gmail.com
Fri Mar 20 16:09:05 MSK 2020


* Cyrill Gorcunov <gorcunov at gmail.com> [20/03/20 14:15]:
> On Fri, Mar 20, 2020 at 01:58:42PM +0300, Konstantin Osipov wrote:
> > * Cyrill Gorcunov <gorcunov at gmail.com> [20/03/20 13:34]:
> > > > >  
> > > > > -	if (txn_write_to_wal(req) != 0)
> > > > > +	fiber_set_txn(fiber(), NULL);
> > > > > +	if (journal_write(req) != 0) {
> > > > > +		fiber_set_txn(fiber(), txn);
> > > > 
> > > > I wonder why do you need to clear/set txn in txn_commit()?
> > 
> > Forgive me for being really painful about it, but why not use
> > different complete callbacks for sync and async wal writes?-)
> > Under the hood they will still call txn_complete(), but one will
> > assert, and another will not?
> 
> Hmm. If I remember correctly we've been planning to use callbacks
> only for async writes. Actually I can introduce callback helper
> for sync writes as well but this ruines the whole idea, no?

But aren't you using the same callback for sync and async now? 

And if you are not using callback for sync, why do you need to
manipulate with txn in sync?

I'm lost, I accept it. 

> 
> I can easily hide this bit test inside txn_complete itself and
> for sync write there will be plain txn_complete call, like
> 
> txn_commit
> 	...
> 	journal_write();
> 	...
> 	txn_complete();

My point is simple: can we avoid the whole mess of clearing and
restoring fiber txn for sync write calls? 
> 
> ie the whole idea was to not use callbacks for sync write, no?

-- 
Konstantin Osipov, Moscow, Russia


More information about the Tarantool-patches mailing list