Avoid to re-establish replication if node is already myself primary in CLUSTER REPLICATE (#884)

If n is already myself primary, there is no need to re-establish the
replication connection.

In the past we allow a replica node to reconnect with its primary via
this CLUSTER REPLICATE command, it will use psync. But since #885, we
will assume that a full sync is needed in this case, so if we don't do
this, the replica will always use full sync.

Signed-off-by: Binbin <binloveplay1314@qq.com>
Co-authored-by: Ping Xie <pingxie@google.com>
This commit is contained in:
Binbin 2024-08-22 11:00:18 +08:00 committed by GitHub
parent 39f8bcb91b
commit 08aaeea4b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6564,6 +6564,13 @@ int clusterCommandSpecial(client *c) {
return 1;
}
/* If `n` is already my primary, there is no need to re-establish the
* replication connection. */
if (myself->replicaof == n) {
addReply(c, shared.ok);
return 1;
}
/* Set the primary.
* If the instance is a primary, it is an empty primary.
* If the instance is a replica, it had a totally different replication history.