| 1567 | |
| 1568 | #define SENTINEL_RESET_NO_SENTINELS (1<<0) |
| 1569 | void sentinelResetMaster(sentinelRedisInstance *ri, int flags) { |
| 1570 | serverAssert(ri->flags & SRI_MASTER); |
| 1571 | dictRelease(ri->slaves); |
| 1572 | ri->slaves = dictCreate(&instancesDictType,NULL); |
| 1573 | if (!(flags & SENTINEL_RESET_NO_SENTINELS)) { |
| 1574 | dictRelease(ri->sentinels); |
| 1575 | ri->sentinels = dictCreate(&instancesDictType,NULL); |
| 1576 | } |
| 1577 | instanceLinkCloseConnection(ri->link,ri->link->cc); |
| 1578 | instanceLinkCloseConnection(ri->link,ri->link->pc); |
| 1579 | ri->flags &= SRI_MASTER; |
| 1580 | if (ri->leader) { |
| 1581 | sdsfree(ri->leader); |
| 1582 | ri->leader = NULL; |
| 1583 | } |
| 1584 | ri->failover_state = SENTINEL_FAILOVER_STATE_NONE; |
| 1585 | ri->failover_state_change_time = 0; |
| 1586 | ri->failover_start_time = 0; /* We can failover again ASAP. */ |
| 1587 | ri->promoted_slave = NULL; |
| 1588 | sdsfree(ri->runid); |
| 1589 | sdsfree(ri->slave_master_host); |
| 1590 | ri->runid = NULL; |
| 1591 | ri->slave_master_host = NULL; |
| 1592 | ri->link->act_ping_time = mstime(); |
| 1593 | ri->link->last_ping_time = 0; |
| 1594 | ri->link->last_avail_time = mstime(); |
| 1595 | ri->link->last_pong_time = mstime(); |
| 1596 | ri->role_reported_time = mstime(); |
| 1597 | ri->role_reported = SRI_MASTER; |
| 1598 | if (flags & SENTINEL_GENERATE_EVENT) |
| 1599 | sentinelEvent(LL_WARNING,"+reset-master",ri,"%@"); |
| 1600 | } |
| 1601 | |
| 1602 | /* Call sentinelResetMaster() on every master with a name matching the specified |
| 1603 | * pattern. */ |
no test coverage detected