mirror of
https://github.com/fluencelabs/redis
synced 2025-03-18 16:40:50 +00:00
Sentinel: fix slave promotion timeout.
If we can't reconfigure a slave in time during failover, go forward as anyway the slave will be fixed by Sentinels in the future, once they detect it is misconfigured. Otherwise a failover in progress may never terminate if for some reason the slave is uncapable to sync with the master while at the same time it is not disconnected.
This commit is contained in:
parent
af788b5852
commit
18b8bad53c
@ -3364,14 +3364,17 @@ void sentinelFailoverReconfNextSlave(sentinelRedisInstance *master) {
|
||||
/* Skip the promoted slave, and already configured slaves. */
|
||||
if (slave->flags & (SRI_PROMOTED|SRI_RECONF_DONE)) continue;
|
||||
|
||||
/* Clear the SRI_RECONF_SENT flag if too much time elapsed without
|
||||
* the slave moving forward to the next state. */
|
||||
/* If too much time elapsed without the slave moving forward to
|
||||
* the next state, consider it reconfigured even if it is not.
|
||||
* Sentinels will detect the slave as misconfigured and fix its
|
||||
* configuration later. */
|
||||
if ((slave->flags & SRI_RECONF_SENT) &&
|
||||
(mstime() - slave->slave_reconf_sent_time) >
|
||||
SENTINEL_SLAVE_RECONF_RETRY_PERIOD)
|
||||
{
|
||||
sentinelEvent(REDIS_NOTICE,"-slave-reconf-sent-timeout",slave,"%@");
|
||||
slave->flags &= ~SRI_RECONF_SENT;
|
||||
slave->flags |= SRI_RECONF_DONE;
|
||||
}
|
||||
|
||||
/* Nothing to do for instances that are disconnected or already
|
||||
|
Loading…
x
Reference in New Issue
Block a user