From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp40.i.mail.ru (smtp40.i.mail.ru [94.100.177.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 80FC9469719 for ; Thu, 29 Oct 2020 20:14:39 +0300 (MSK) Date: Thu, 29 Oct 2020 20:14:37 +0300 From: Sergey Ostanevich Message-ID: <20201029171437.GA517@tarantool.org> References: <20201028162212.1550-1-sergos@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Subject: Re: [Tarantool-patches] [PATCH] lua: handle fiber cancellation for fiber.cond List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Oleg Babin Cc: tarantool-patches@dev.tarantool.org, alexander.turenko@tarantool.org Hi Oleg! Thanks for the comment, I believe I have to resend the patch along with C API changes. What I see at the moment - failures like [076] test_run:wait_upstream(1, {message_re = 'Missing %.xlog file', status = 'loading'}) [076] --- [076] -- true [076] +- false which incurred by the intended behavior change, AFAIU. We no longer return 'true' in case the fiber is cancelled. The wait_upstream returns the cond wait result, hence the output differs. Did you observe any other failures? Regards, Sergos On 28 окт 20:14, Oleg Babin wrote: > Hi! Thanks for the patch! > > The main reason I didn't send this patch is inconsistency between Lua and C > API. > > To eliminate such inconsistency [1] was implemented. Unfortunately some test > fails and I've failed to find root of the problem. > > However I still believe that the problem should be solved at "core" level. > > Anyway, it would be great if some solution will be pushed to upstream. > > > [1] https://github.com/tarantool/tarantool/commit/e7a5120603f362364953315d31aa529342263e0b > > > On 28/10/2020 19:22, sergos@tarantool.org wrote: > > From: Sergey Ostanevich > > > > Before this patch fiber.cond():wait() just returns for cancelled > > fiber. In contrast fiber.channel():get() threw "fiber is > > canceled" error. > > This patch unify behaviour of channels and condvars and also fixes > > related net.box module problem - it was impossible to interrupt > > net.box call with fiber.cancel because it used fiber.cond under > > the hood. Test cases for both bugs are added. > > > > Closes #4834 > > Closes #5013 > > > > Co-authored-by: Oleg Babin > > > > @TarantoolBot document > > Title: fiber.cond():wait() throws if fiber is cancelled > > > > Currently fiber.cond():wait() throws an error if waiting fiber is > > cancelled like in case with fiber.channel():get(). > > --- > >