| 4957 | } |
| 4958 | |
| 4959 | void sentinelFailoverStateMachine(sentinelRedisInstance *ri) { |
| 4960 | serverAssert(ri->flags & SRI_MASTER); |
| 4961 | |
| 4962 | if (!(ri->flags & SRI_FAILOVER_IN_PROGRESS)) return; |
| 4963 | |
| 4964 | switch(ri->failover_state) { |
| 4965 | case SENTINEL_FAILOVER_STATE_WAIT_START: |
| 4966 | sentinelFailoverWaitStart(ri); |
| 4967 | break; |
| 4968 | case SENTINEL_FAILOVER_STATE_SELECT_SLAVE: |
| 4969 | sentinelFailoverSelectSlave(ri); |
| 4970 | break; |
| 4971 | case SENTINEL_FAILOVER_STATE_SEND_SLAVEOF_NOONE: |
| 4972 | sentinelFailoverSendSlaveOfNoOne(ri); |
| 4973 | break; |
| 4974 | case SENTINEL_FAILOVER_STATE_WAIT_PROMOTION: |
| 4975 | sentinelFailoverWaitPromotion(ri); |
| 4976 | break; |
| 4977 | case SENTINEL_FAILOVER_STATE_RECONF_SLAVES: |
| 4978 | sentinelFailoverReconfNextSlave(ri); |
| 4979 | break; |
| 4980 | } |
| 4981 | } |
| 4982 | |
| 4983 | /* Abort a failover in progress: |
| 4984 | * |
no test coverage detected