Sentinel: make sure role_reported is always updated.

This commit is contained in:
antirez 2013-11-13 16:21:58 +01:00
parent 46a053d34b
commit 17718fdcba

View File

@ -1546,20 +1546,21 @@ void sentinelRefreshInstanceInfo(sentinelRedisInstance *ri, const char *info) {
/* When what we believe is our master, turned into a slave, the wiser /* 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 * thing we can do is to follow the events and redirect to the new
* master, always. */ * 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) { if (ri->role_reported != SRI_MASTER) {
ri->role_reported_time = mstime(); ri->role_reported_time = mstime();
ri->role_reported = SRI_MASTER; ri->role_reported = SRI_MASTER;
} }
sentinelEvent(REDIS_WARNING,"+redirect-to-master",ri, if (ri->slave_master_host) {
"%s %s %d %s %d", sentinelEvent(REDIS_WARNING,"+redirect-to-master",ri,
ri->name, ri->addr->ip, ri->addr->port, "%s %s %d %s %d",
ri->slave_master_host, ri->slave_master_port); ri->name, ri->addr->ip, ri->addr->port,
sentinelResetMasterAndChangeAddress(ri,ri->slave_master_host, ri->slave_master_host, ri->slave_master_port);
ri->slave_master_port); sentinelResetMasterAndChangeAddress(ri,ri->slave_master_host,
return; /* Don't process anything after this event. */ ri->slave_master_port);
return; /* Don't process anything after this event. */
}
} }
/* Handle slave -> master role switch. */ /* Handle slave -> master role switch. */