From f55ad3038fa4c7130fe59392e2a256432b546f5d Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 21 Nov 2013 12:39:47 +0100 Subject: [PATCH] Sentinel: manual failover works again. --- src/sentinel.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sentinel.c b/src/sentinel.c index ca6d0eb5..134e8ee9 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -2452,6 +2452,8 @@ void sentinelCommand(redisClient *c) { addReplySds(c,sdsnew("-NOGOODSLAVE No suitable slave to promote\r\n")); return; } + redisLog(REDIS_WARNING,"Executing user requested FAILOVER of '%s'", + ri->name); sentinelStartFailover(ri); ri->flags |= SRI_FORCE_FAILOVER; addReply(c,shared.ok); @@ -3017,8 +3019,9 @@ void sentinelFailoverWaitStart(sentinelRedisInstance *ri) { isleader = leader && strcasecmp(leader,server.runid) == 0; sdsfree(leader); - /* If I'm not the leader, I can't continue with the failover. */ - if (!isleader) { + /* If I'm not the leader, and it is not a forced failover via + * SENTINEL FAILOVER, then I can't continue with the failover. */ + if (!isleader && !(ri->flags & SRI_FORCE_FAILOVER)) { int election_timeout = SENTINEL_ELECTION_TIMEOUT; /* The election timeout is the MIN between SENTINEL_ELECTION_TIMEOUT