From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp18.mail.ru (smtp18.mail.ru [94.100.176.155]) (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 F2FE3469710 for ; Fri, 8 May 2020 01:16:36 +0300 (MSK) Date: Thu, 7 May 2020 22:16:36 +0000 From: Nikita Pettik Message-ID: <20200507221636.GA13970@tarantool.org> References: <7965217ceed66d448cee453c690e8d91ba7a841b.1587948306.git.korablev@tarantool.org> <653509c4-55b0-a7cb-55ab-eb534a0e6421@tarantool.org> <20200507003617.GB9992@tarantool.org> <7b07eb55-340b-b2ca-231c-9feeffe32a3f@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <7b07eb55-340b-b2ca-231c-9feeffe32a3f@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH v3 3/3] vinyl: clean-up write iterator if vy_task_write_run() fails List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aleksandr Lyapunov Cc: tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org On 07 May 10:53, Aleksandr Lyapunov wrote: > On 5/7/20 3:36 AM, Nikita Pettik wrote: > > On 06 May 13:37, Aleksandr Lyapunov wrote: > > > It's very strange, as I see start() method already makes its own cleanup > > > in case of failure and does not require 'stop' call in this case. > > > If it does not do it correctly - it must be fixed (or removed completely, > > > but it seems to be very serious change). > > Turns out start() doesn't provide proper clean-up: in case > > vy_write_iterator_add_src() fails, only last source is cleaned up, > > meanwhile the rest will be destroyed in vy_write_iterator_stop(). > > I've moved clean-up part from stop() method right to start(). Here's diff: > > Could you see commit 2f17c929? I see it in master. > It does exactly the same and some other good looking related changes. > I explored that patch. It is not backported to 1.10 (obviously) since other changes except for additional clean-up in vy_write_iterator_start() look like refactoring (we push to 1.10 only bug fixes). It can't be cherry-picked now since code is bit different and 1.10 lacks some features (like heap helpers to determine whether heap node is linked or not). So I suggest to leave my patch as is for 1.10 branch and backport test case to master branch.