From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp63.i.mail.ru (smtp63.i.mail.ru [217.69.128.43]) (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 4F8774696C3 for ; Tue, 14 Apr 2020 01:31:42 +0300 (MSK) Date: Mon, 13 Apr 2020 22:31:41 +0000 From: Nikita Pettik Message-ID: <20200413223141.GC24818@tarantool.org> References: <73e1f0baf18ec008312d91db4449447b3c06aa86.1586381297.git.korablev@tarantool.org> <67dd4512-2e87-b9f1-79d4-b7d182c0634e@tarantool.org> <20200410154713.GE9428@tarantool.org> <20200410214509.GC10478@tarantool.org> <814d82af-87cd-e464-6845-88535bd374f5@tarantool.org> <20200411173038.GA11861@atlas> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200411173038.GA11861@atlas> Subject: Re: [Tarantool-patches] [PATCH 2/2] vinyl: clean-up read views if *_build_history() fails List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Konstantin Osipov , Vladislav Shpilevoy , tarantool-patches@dev.tarantool.org On 11 Apr 20:30, Konstantin Osipov wrote: > * Vladislav Shpilevoy [20/04/11 10:25]: > > > @@ -986,8 +986,11 @@ vy_write_iterator_build_read_views(struct vy_write_iterator *stream, int *count) > > > if (rv->history == NULL) > > > continue; > > > if (vy_read_view_merge(stream, hint, rv, > > > - is_first_insert) != 0) > > > + is_first_insert) != 0) { > > > + while (rv >= &stream->read_views[0]) { > > > + rv->history = NULL; > > > + rv--; > > > + } > > > goto error; > > > > The same question as to the previous fix - shouldn't that be > > cleaned by the function, which created the mess, by > > vy_read_view_merge() internally? > > and shouldn't this have an own test case? I will try to come up with test, but I found this accidentally (due to another bug, so original reproducer is not really suitable..). As a last resort, I can use another one error injection. > -- > Konstantin Osipov, Moscow, Russia