From 17718fdcbae91bb47a370962fd87e660f5452b06 Mon Sep 17 00:00:00 2001 From: antirez Date: Wed, 13 Nov 2013 16:21:58 +0100 Subject: [PATCH] Sentinel: make sure role_reported is always updated. --- src/sentinel.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/sentinel.c b/src/sentinel.c index 442eebc3..a62e6495 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -1546,20 +1546,21 @@ void sentinelRefreshInstanceInfo(sentinelRedisInstance *ri, const char *info) { /* When what we believe is our master, turned into a slave, the wiser * thing we can do is to follow the events and redirect to the new * master, always. */ - if ((ri->flags & SRI_MASTER) && role == SRI_SLAVE && ri->slave_master_host) - { + if ((ri->flags & SRI_MASTER) && role == SRI_SLAVE) { if (ri->role_reported != SRI_MASTER) { ri->role_reported_time = mstime(); ri->role_reported = SRI_MASTER; } - sentinelEvent(REDIS_WARNING,"+redirect-to-master",ri, - "%s %s %d %s %d", - ri->name, ri->addr->ip, ri->addr->port, - ri->slave_master_host, ri->slave_master_port); - sentinelResetMasterAndChangeAddress(ri,ri->slave_master_host, - ri->slave_master_port); - return; /* Don't process anything after this event. */ + if (ri->slave_master_host) { + sentinelEvent(REDIS_WARNING,"+redirect-to-master",ri, + "%s %s %d %s %d", + ri->name, ri->addr->ip, ri->addr->port, + ri->slave_master_host, ri->slave_master_port); + sentinelResetMasterAndChangeAddress(ri,ri->slave_master_host, + ri->slave_master_port); + return; /* Don't process anything after this event. */ + } } /* Handle slave -> master role switch. */