From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp58.i.mail.ru (smtp58.i.mail.ru [217.69.128.38]) (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 0450B469710 for ; Tue, 9 Jun 2020 19:31:42 +0300 (MSK) Date: Tue, 9 Jun 2020 19:31:40 +0300 From: "Alexander V. Tikhonov" Message-ID: <20200609163140.GA32649@hpalx> References: <20200609161041.GB67772@pony.bronevichok.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200609161041.GB67772@pony.bronevichok.ru> Subject: Re: [Tarantool-patches] [PATCH v1] test: fix flaky replication/status.test.lua List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Sergey Bronnikov Cc: tarantool-patches@dev.tarantool.org Hi Sergey, thanks a lot for the review, forgot to add to the patch the result file. I'll resend it with the new review letter. On Tue, Jun 09, 2020 at 07:10:41PM +0300, Sergey Bronnikov wrote: > Hi, Sasha > > test doesn't work for me at all - failed 5 out of 5 times: > > [001] Test failed! Result content mismatch: > [001] --- replication/status.result Tue Apr 28 07:45:20 2020 > [001] +++ replication/status.reject Tue Jun 9 16:02:09 2020 > [001] @@ -302,14 +302,7 @@ > [001] --- [001] - true > [001] ... > [001] -r = box.info.replication[1] > [001] ---- > [001] -... > [001] -r.upstream.status == "stopped" > [001] ---- > [001] -- true [001] -... > [001] -r.upstream.message:match('Duplicate') ~= nil > [001] +test_run:wait_upstream(1, {status = 'stopped', message_re = 'Duplicate'}) > [001] --- > [001] - true > [001] ... > [001] > > Sergey > > On 17:16 Tue 09 Jun , Alexander V. Tikhonov wrote: > > Found issue: > > > > [009] --- replication/status.result Wed May 6 09:03:18 2020 > > [009] +++ replication/status.reject Tue May 12 15:55:09 2020 > > [009] @@ -307,11 +307,12 @@ > > [009] ... > > [009] r.upstream.status == "stopped" > > [009] --- > > [009] -- true > > [009] +- false > > [009] ... > > [009] r.upstream.message:match('Duplicate') ~= nil > > [009] --- > > [009] -- true > > [009] +- error: '[string "return r.upstream.message:match(''Duplicate'') ..."]:1: attempt > > [009] + to index field ''message'' (a nil value)' > > [009] ... > > [009] test_run:cmd('switch default') > > [009] --- > > > > To check the upstream status and it's message need to wait until an > > upstream appears. This prevents an attempt to index a nil value when > > one of those functions are called before a record about a peer appears > > in box.info.replication. It was observed on test: > > replication/show_error_on_disconnect > > after commit > > c6bea65f8ef5f6c737cf70c0127189d0ebcbc36e ('replication: recfg with 0 > > quorum returns immediately'). > > > > Closes #4969 > > --- > > > > Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4969-replication-status > > Issue: https://github.com/tarantool/tarantool/issues/4969 > > > > test/replication/status.test.lua | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/test/replication/status.test.lua b/test/replication/status.test.lua > > index a26fec74b..090968172 100644 > > --- a/test/replication/status.test.lua > > +++ b/test/replication/status.test.lua > > @@ -110,9 +110,7 @@ box.space._schema:insert({'dup'}) > > test_run:cmd('switch default') > > box.space._schema:insert({'dup'}) > > test_run:cmd('switch replica') > > -r = box.info.replication[1] > > -r.upstream.status == "stopped" > > -r.upstream.message:match('Duplicate') ~= nil > > +test_run:wait_upstream(1, {status = 'stopped', message_re = 'Duplicate'}) > > test_run:cmd('switch default') > > box.space._schema:delete({'dup'}) > > test_run:cmd("push filter ', lsn: [0-9]+' to ', lsn: '") > > -- > > 2.17.1 > > > > -- > sergeyb@