summaryrefslogtreecommitdiff
path: root/tests/sentinel
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2016-07-22 10:51:25 +0200
committerantirez <antirez@gmail.com>2016-07-22 10:51:25 +0200
commit3e9ce38b0a9f19d9c5cd792f260c7fdbbe5e98ee (patch)
tree48e03f717394d41c451e50e209f08dac7df35f40 /tests/sentinel
parent0a628e51025c4307c70cb00094dff9cdd1732f31 (diff)
downloadredis-3e9ce38b0a9f19d9c5cd792f260c7fdbbe5e98ee.tar.gz
Sentinel: check Slave INFO state more often when disconnected.
During the initial handshake with the master a slave will report to have a very high disconnection time from its master (since technically it was disconnected since forever, so the current UNIX time in seconds is reported). However when the slave is connected again the Sentinel may re-scan the INFO output again only after 10 seconds, which is a long time. During this time Sentinels will consider this instance unable to failover, so a useless delay is introduced. Actaully this hardly happened in the practice because when a slave's master is down, the INFO period for slaves changes to 1 second. However when a manual failover is attempted immediately after adding slaves (like in the case of the Sentinel unit test), this problem may happen. This commit changes the INFO period to 1 second even in the case the slave's master is not down, but the slave reported to be disconnected from the master (by publishing, last time we checked, a master disconnection time field in INFO). This change is required as a result of an unrelated change in the replication code that adds a small delay in the master-slave first synchronization.
Diffstat (limited to 'tests/sentinel')
-rw-r--r--tests/sentinel/tests/05-manual.tcl3
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/sentinel/tests/05-manual.tcl b/tests/sentinel/tests/05-manual.tcl
index 1a60d814b..5214fdce1 100644
--- a/tests/sentinel/tests/05-manual.tcl
+++ b/tests/sentinel/tests/05-manual.tcl
@@ -6,7 +6,8 @@ test "Manual failover works" {
set old_port [RI $master_id tcp_port]
set addr [S 0 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster]
assert {[lindex $addr 1] == $old_port}
- S 0 SENTINEL FAILOVER mymaster
+ catch {S 0 SENTINEL FAILOVER mymaster} reply
+ assert {$reply eq "OK"}
foreach_sentinel_id id {
wait_for_condition 1000 50 {
[lindex [S $id SENTINEL GET-MASTER-ADDR-BY-NAME mymaster] 1] != $old_port