[Tarantool-patches] [PATCH v1] test: flaky replication/gh-4606-admin-creds test

Alexander V. Tikhonov avtikhon at tarantool.org
Sun Sep 6 21:30:48 MSK 2020


On heavy loaded hosts found the following issue:

  [021] --- replication/gh-4606-admin-creds.result	Wed Apr 15 15:47:41 2020
  [021] +++ replication/gh-4606-admin-creds.reject	Sun Sep  6 20:23:09 2020
  [021] @@ -36,7 +36,42 @@
  [021]   | ...
  [021]  i.replication[i.id % 2 + 1].upstream.status == 'follow' or i
  [021]   | ---
  [021] - | - true
  [021] + | - version: 2.6.0-52-g71a24b9f2
  [021] + |   id: 2
  [021] + |   ro: false
  [021] + |   uuid: 3921679b-d994-4cf0-a6ef-1f6a0d96fc79
  [021] + |   package: Tarantool
  [021] + |   cluster:
  [021] + |     uuid: f27dfdfe-2802-486a-bc47-abc83b9097cf
  [021] + |   listen: unix/:/Users/tntmac02.tarantool.i/tnt/test/var/014_replication/replica_auth.socket-iproto
  [021] + |   replication_anon:
  [021] + |     count: 0
  [021] + |   replication:
  [021] + |     1:
  [021] + |       id: 1
  [021] + |       uuid: a07cad18-d27f-48c4-8d56-96b17026702e
  [021] + |       lsn: 3
  [021] + |       upstream:
  [021] + |         peer: admin at unix/:/Users/tntmac02.tarantool.i/tnt/test/var/014_replication/master.socket-iproto
  [021] + |         lag: 0.0030207633972168
  [021] + |         status: disconnected
  [021] + |         idle: 0.44824500009418
  [021] + |         message: timed out
  [021] + |         system_message: Operation timed out
  [021] + |     2:
  [021] + |       id: 2
  [021] + |       uuid: 3921679b-d994-4cf0-a6ef-1f6a0d96fc79
  [021] + |       lsn: 0
  [021] + |   signature: 3
  [021] + |   status: running
  [021] + |   vclock: {1: 3}
  [021] + |   uptime: 1
  [021] + |   lsn: 0
  [021] + |   sql: []
  [021] + |   gc: []
  [021] + |   vinyl: []
  [021] + |   memory: []
  [021] + |   pid: 40326
  [021]   | ...
  [021]  test_run:switch('default')
  [021]   | ---

It happened because replication upstream status check occurred too
early, when it was only in 'disconnected' state. To give the
replication status check routine ability to reach the needed 'follow'
state, it need to wait for it using test_run:wait_upstream() routine.

Closes #5233
---

Github: https://github.com/tarantool/tarantool/tree/avtikhon/gh-5233-fix-4606
Issue: https://github.com/tarantool/tarantool/issues/5233

 test/replication/gh-4606-admin-creds.result   | 6 +++++-
 test/replication/gh-4606-admin-creds.test.lua | 4 +++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/test/replication/gh-4606-admin-creds.result b/test/replication/gh-4606-admin-creds.result
index fc0fbff44..138e27dce 100644
--- a/test/replication/gh-4606-admin-creds.result
+++ b/test/replication/gh-4606-admin-creds.result
@@ -34,10 +34,14 @@ test_run:switch('replica_auth')
 i = box.info
  | ---
  | ...
-i.replication[i.id % 2 + 1].upstream.status == 'follow' or i
+replica_id = i.id % 2 + 1
+ | ---
+ | ...
+test_run:wait_upstream(replica_id, {status = 'follow'}) or i
  | ---
  | - true
  | ...
+
 test_run:switch('default')
  | ---
  | - true
diff --git a/test/replication/gh-4606-admin-creds.test.lua b/test/replication/gh-4606-admin-creds.test.lua
index 217d46ce1..9ab74700a 100644
--- a/test/replication/gh-4606-admin-creds.test.lua
+++ b/test/replication/gh-4606-admin-creds.test.lua
@@ -16,7 +16,9 @@ test_run:cmd("create server replica_auth with rpl_master=default, script='replic
 test_run:cmd("start server replica_auth with args='admin:111 0.1'")
 test_run:switch('replica_auth')
 i = box.info
-i.replication[i.id % 2 + 1].upstream.status == 'follow' or i
+replica_id = i.id % 2 + 1
+test_run:wait_upstream(replica_id, {status = 'follow'}) or i
+
 test_run:switch('default')
 test_run:cmd("stop server replica_auth")
 test_run:cmd("cleanup server replica_auth")
-- 
2.17.1



More information about the Tarantool-patches mailing list