Avoid crash when a cluster node is a replica of a replica of itself (#11263)
This commit is contained in:
parent
6c03786b66
commit
42e4241ece
@ -1977,7 +1977,13 @@ void clusterUpdateSlotsConfigWith(clusterNode *sender, uint64_t senderConfigEpoc
|
||||
clusterDoBeforeSleep(CLUSTER_TODO_SAVE_CONFIG|
|
||||
CLUSTER_TODO_UPDATE_STATE|
|
||||
CLUSTER_TODO_FSYNC_CONFIG);
|
||||
} else if (myself->slaveof && myself->slaveof->slaveof) {
|
||||
} else if (myself->slaveof && myself->slaveof->slaveof &&
|
||||
/* In some rare case when CLUSTER FAILOVER TAKEOVER is used, it
|
||||
* can happen that myself is a replica of a replica of myself. If
|
||||
* this happens, we do nothing to avoid a crash and wait for the
|
||||
* admin to repair the cluster. */
|
||||
myself->slaveof->slaveof != myself)
|
||||
{
|
||||
/* Safeguard against sub-replicas. A replica's master can turn itself
|
||||
* into a replica if its last slot is removed. If no other node takes
|
||||
* over the slot, there is nothing else to trigger replica migration. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user