From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp61.i.mail.ru (smtp61.i.mail.ru [217.69.128.41]) (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 6D8B1445320 for ; Tue, 14 Jul 2020 13:42:45 +0300 (MSK) From: "Alexander V. Tikhonov" Date: Tue, 14 Jul 2020 13:42:43 +0300 Message-Id: Subject: [Tarantool-patches] [PATCH v1] test: replication/wal_rw_stress fix wait_cond List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kirill Yukhin , Alexander Turenko Cc: tarantool-patches@dev.tarantool.org Found that on heavy loaded hosts the test tries to check replication downstream status when downstream structure is not ready and it fails with the error: [017] --- replication/wal_rw_stress.result Thu Jul 9 17:04:16 2020 [017] +++ replication/wal_rw_stress.reject Fri May 8 08:25:15 2020 [017] @@ -75,7 +75,8 @@ [017] return box.info.replication[1].downstream.status ~= 'stopped' \ [017] end) or box.info [017] --- [017] -- true [017] +- error: '[string "return test_run:wait_cond(function() ..."]:1: attempt to [017] + index field ''downstream'' (a nil value)' [017] ... [017] test_run:cmd("switch default") [017] --- [017] So the wait condition should start from the check of the downstream structure availability. Follows up #4977 --- Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-4977-test-replication-wal_rw_stress Issue: https://github.com/tarantool/tarantool/issues/4977 test/replication/wal_rw_stress.result | 6 ++++-- test/replication/wal_rw_stress.test.lua | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/test/replication/wal_rw_stress.result b/test/replication/wal_rw_stress.result index 50cfb08c7..41f307fc2 100644 --- a/test/replication/wal_rw_stress.result +++ b/test/replication/wal_rw_stress.result @@ -71,8 +71,10 @@ test_run:cmd("switch replica") box.cfg{replication = replication} --- ... -test_run:wait_cond(function() \ - return box.info.replication[1].downstream.status ~= 'stopped' \ +test_run:wait_cond(function() \ + local r = box.info.replication[1] \ + return (r ~= nil and r.downstream ~= nil and \ + r.downstream.status ~= 'stopped') \ end) or box.info --- - true diff --git a/test/replication/wal_rw_stress.test.lua b/test/replication/wal_rw_stress.test.lua index e9b948518..96df2d6bf 100644 --- a/test/replication/wal_rw_stress.test.lua +++ b/test/replication/wal_rw_stress.test.lua @@ -38,8 +38,10 @@ test_run:cmd("setopt delimiter ''"); -- are running in different threads, there shouldn't be any rw errors. test_run:cmd("switch replica") box.cfg{replication = replication} -test_run:wait_cond(function() \ - return box.info.replication[1].downstream.status ~= 'stopped' \ +test_run:wait_cond(function() \ + local r = box.info.replication[1] \ + return (r ~= nil and r.downstream ~= nil and \ + r.downstream.status ~= 'stopped') \ end) or box.info test_run:cmd("switch default") -- 2.17.1