[tarantool-patches] Re: [PATCH v1] test: join_vclock test needs fix for high load

Alexander Turenko alexander.turenko at tarantool.org
Wed May 8 16:55:12 MSK 2019


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
> 




More information about the Tarantool-patches mailing list