From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 4D878469719 for ; Fri, 20 Mar 2020 16:09:07 +0300 (MSK) Received: by mail-lf1-f67.google.com with SMTP id j17so4485043lfe.7 for ; Fri, 20 Mar 2020 06:09:07 -0700 (PDT) Date: Fri, 20 Mar 2020 16:09:05 +0300 From: Konstantin Osipov Message-ID: <20200320130905.GA29536@atlas> References: <20200320081956.30650-1-gorcunov@gmail.com> <20200320081956.30650-12-gorcunov@gmail.com> <20200320102254.GB20273@atlas> <20200320102956.GD8326@uranus> <20200320105842.GA30252@atlas> <20200320111224.GE8326@uranus> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200320111224.GE8326@uranus> Subject: Re: [Tarantool-patches] [PATCH v15 11/11] box/journal: redesign journal operations List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cyrill Gorcunov Cc: tml * Cyrill Gorcunov [20/03/20 14:15]: > On Fri, Mar 20, 2020 at 01:58:42PM +0300, Konstantin Osipov wrote: > > * Cyrill Gorcunov [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