From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTP id C0D4A2DFCA for ; Wed, 8 May 2019 09:55:27 -0400 (EDT) Received: from turing.freelists.org ([127.0.0.1]) by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hvsM2MJRiFIP for ; Wed, 8 May 2019 09:55:27 -0400 (EDT) Received: from smtp38.i.mail.ru (smtp38.i.mail.ru [94.100.177.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by turing.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 7B1C42DF9C for ; Wed, 8 May 2019 09:55:27 -0400 (EDT) Date: Wed, 8 May 2019 16:55:12 +0300 From: Alexander Turenko Subject: [tarantool-patches] Re: [PATCH v1] test: join_vclock test needs fix for high load Message-ID: <20190508135511.4rwujy3dwkdto4ib@tkn_work_nb> References: <8c5c4b1b1aaf23a12e895ca6b1498f2a3ca8dae2.1555339308.git.avtikhon@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <8c5c4b1b1aaf23a12e895ca6b1498f2a3ca8dae2.1555339308.git.avtikhon@tarantool.org> Sender: tarantool-patches-bounce@freelists.org Errors-to: tarantool-patches-bounce@freelists.org Reply-To: tarantool-patches@freelists.org List-Help: List-Unsubscribe: List-software: Ecartis version 1.0.0 List-Id: tarantool-patches List-Subscribe: List-Owner: List-post: List-Archive: To: avtikhon Cc: tarantool-patches@freelists.org ERRINJ_RELAY_FINAL_SLEEP stops until stop_vclock (see src/box/relay.cc::relay_final_join() for that code and src/box/box.cc::box_process_join() for the protocol description). So after it unblocks a data transfer can be in a progress (during final join or in subscribed state). The test case checks that there are no holes at this point, so waiting here looks inappropriate. The real problem here is that we check amount of tuples in the space and a content of a last tuple in a separate requests (test-run sends each line separately to tarantool). Please, consider this way: diff --git a/test/replication/join_vclock.test.lua b/test/replication/join_vclock.test.lua index 0b60dffc2..9bf42041d 100644 --- a/test/replication/join_vclock.test.lua +++ b/test/replication/join_vclock.test.lua @@ -26,8 +26,8 @@ ch:get() errinj.set("ERRINJ_RELAY_FINAL_SLEEP", false) test_run:cmd("switch replica1") -cnt = box.space.test.index[0]:count() -box.space.test.index.primary:max()[1] == cnt - 1 +cnt = box.space.test.index[0]:count() max = box.space.test.index.primary:max()[1] +cnt - 1 == max or {cnt - 1, max} -- true test_run:cmd("switch default") replica_set.drop_all(test_run) It works good for me. Please ask review from Georgy K. (it is obviously okay for me, because I propose it myself :)). WBR, Alexander Turenko. On Tue, Apr 16, 2019 at 11:01:25AM +0300, avtikhon wrote: > Join vclock test failed on high load, to resolve it > need to add wait condition routine: > > [015] Test failed! Result content mismatch: > [015] --- replication/join_vclock.result Fri Apr 12 14:49:26 2019 > [015] +++ replication/join_vclock.reject Mon Apr 15 17:10:13 2019 > [015] @@ -72,7 +72,7 @@ > [015] ... > [015] box.space.test.index.primary:max()[1] == cnt - 1 > [015] --- > [015] -- true > [015] +- false > [015] ... > [015] test_run:cmd("switch default") > [015] --- > > Close #4160 > --- > > Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh4160-join-vclock-highload > Issue: https://github.com/tarantool/tarantool/issues/4160 > > test/replication/join_vclock.result | 5 +---- > test/replication/join_vclock.test.lua | 3 +-- > 2 files changed, 2 insertions(+), 6 deletions(-) > > diff --git a/test/replication/join_vclock.result b/test/replication/join_vclock.result > index a9781073d..050f68ea6 100644 > --- a/test/replication/join_vclock.result > +++ b/test/replication/join_vclock.result > @@ -67,10 +67,7 @@ test_run:cmd("switch replica1") > --- > - true > ... > -cnt = box.space.test.index[0]:count() > ---- > -... > -box.space.test.index.primary:max()[1] == cnt - 1 > +test_run:wait_cond(function() return box.space.test.index.primary:max()[1] == box.space.test.index[0]:count() - 1 end) or box.space.test.index[0]:count() > --- > - true > ... > diff --git a/test/replication/join_vclock.test.lua b/test/replication/join_vclock.test.lua > index 0b60dffc2..a404cb48d 100644 > --- a/test/replication/join_vclock.test.lua > +++ b/test/replication/join_vclock.test.lua > @@ -26,8 +26,7 @@ ch:get() > > errinj.set("ERRINJ_RELAY_FINAL_SLEEP", false) > test_run:cmd("switch replica1") > -cnt = box.space.test.index[0]:count() > -box.space.test.index.primary:max()[1] == cnt - 1 > +test_run:wait_cond(function() return box.space.test.index.primary:max()[1] == box.space.test.index[0]:count() - 1 end) or box.space.test.index[0]:count() > test_run:cmd("switch default") > > replica_set.drop_all(test_run) > -- > 2.17.1 >