From 040506d3bcd3b95af8d2a996c7e754c2606c5efb Mon Sep 17 00:00:00 2001 From: MOON_CLJ Date: Sat, 7 Feb 2015 21:06:10 +0800 Subject: [PATCH] fix sentinelVoteLeader --- src/sentinel.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/sentinel.c b/src/sentinel.c index c693a58627..ba522e6183 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -3244,8 +3244,13 @@ char *sentinelVoteLeader(sentinelRedisInstance *master, uint64_t req_epoch, char if (master->leader_epoch < req_epoch && sentinel.current_epoch <= req_epoch) { - sdsfree(master->leader); - master->leader = sdsnew(req_runid); + mstime_t time_since_last_vote = mstime() - master->failover_start_time; + if (time_since_last_vote > master->failover_timeout || + strcasecmp(req_runid,server.runid) == 0 || + master->leader == NULL) { + sdsfree(master->leader); + master->leader = sdsnew(req_runid); + } master->leader_epoch = sentinel.current_epoch; sentinelFlushConfig(); sentinelEvent(REDIS_WARNING,"+vote-for-leader",master,"%s %llu",