Unverified Commit 42e4241e authored by Viktor Söderqvist's avatar Viktor Söderqvist Committed by GitHub
Browse files

Avoid crash when a cluster node is a replica of a replica of itself (#11263)

parent 6c03786b
...@@ -1977,7 +1977,13 @@ void clusterUpdateSlotsConfigWith(clusterNode *sender, uint64_t senderConfigEpoc ...@@ -1977,7 +1977,13 @@ void clusterUpdateSlotsConfigWith(clusterNode *sender, uint64_t senderConfigEpoc
clusterDoBeforeSleep(CLUSTER_TODO_SAVE_CONFIG| clusterDoBeforeSleep(CLUSTER_TODO_SAVE_CONFIG|
CLUSTER_TODO_UPDATE_STATE| CLUSTER_TODO_UPDATE_STATE|
CLUSTER_TODO_FSYNC_CONFIG); 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 /* 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 * 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. */ * over the slot, there is nothing else to trigger replica migration. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment