redis/tests/integration
Binbin d0244bfc3d
Make sure execute SLAVEOF command in the right order in psync2 test. (#9316)
The psync2 test has failed several times recently.
In #9159 we only solved half of the problem.
i.e. reordering of the replica that's already connected to
the newly promoted master.

Consider this scenario:
0 slaveof 2
1 slaveof 2
3 slaveof 2
4 slaveof 1
0 slaveof no one, became a new master got a new replid
2 slaveof 0, partial resync and got the new replid
3 reconnect 2, inherit the new replid
3 slaveof 4, use the new replid and got a full resync

And another scenario:
1 slaveof 3
2 slaveof 4
3 slaveof 0
4 slaveof 0
4 slaveof no one, became a new master got a new replid
2 reconnect 4, inherit the new replid
2 slaveof 1, use the new replid and got a full resync

So maybe we should reattach replicas in the right order.
i.e. In the above example, if it would have reattached 1, 3 and 0 to
the new chain formed by 4 before trying to attach 2 to 1, it would succeed.

This commit break the SLAVEOF loop into two loops. (ideas from oran)

First loop that uses random to decide who replicates from who.
Second loop that does the actual SLAVEOF command.
In the second loop, we make sure to execute it in the right order,
and after each SLAVEOF, wait for it to be connected before we proceed.

Co-authored-by: Oran Agra <oran@redislabs.com>
2021-08-05 11:26:09 +03:00
..
aof-race.tcl TLS: Connections refactoring and TLS support. 2019-10-07 21:06:13 +03:00
aof.tcl cleanup around loadAppendOnlyFile (#9012) 2021-06-14 10:38:08 +03:00
block-repl.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
convert-zipmap-hash-on-load.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
corrupt-dump-fuzzer.tcl Fix missing check for sanitize_dump in corrupt-dump-fuzzer test (#9285) 2021-07-29 11:53:21 +03:00
corrupt-dump.tcl Fixed some typos, add a spell check ci and others minor fix (#8890) 2021-06-10 15:39:33 +03:00
dismiss-mem.tcl Use madvise(MADV_DONTNEED) to release memory to reduce COW (#8974) 2021-08-04 23:01:46 +03:00
failover.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
logging.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
psync2-pingoff.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
psync2-reg.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
psync2.tcl Make sure execute SLAVEOF command in the right order in psync2 test. (#9316) 2021-08-05 11:26:09 +03:00
rdb.tcl solve test timing issues in replication tests (#9121) 2021-06-22 11:10:11 +03:00
redis-benchmark.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
redis-cli.tcl redis-cli ASK redirect test: Add retry loop to fix timing issue (#9315) 2021-08-05 08:20:30 +03:00
replication-2.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
replication-3.tcl solve test timing issues in replication tests (#9121) 2021-06-22 11:10:11 +03:00
replication-4.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
replication-psync.tcl Improve test suite to handle external servers better. (#9033) 2021-06-09 15:13:24 +03:00
replication.tcl solve test timing issues in replication tests (#9121) 2021-06-22 11:10:11 +03:00