summaryrefslogtreecommitdiff
path: root/src/sentinel.c
diff options
context:
space:
mode:
authorMoti Cohen <moti.cohen@redis.com>2022-12-08 19:14:21 +0200
committerGitHub <noreply@github.com>2022-12-08 19:14:21 +0200
commit4a27aa4875250c075ad2860e9ecc88d77ef6091b (patch)
treee0a8dc7f683574032e651a479ddb0493c10f626d /src/sentinel.c
parent049f5d87e368e2de99479c1b7ea813e6832ac74e (diff)
downloadredis-4a27aa4875250c075ad2860e9ecc88d77ef6091b.tar.gz
Fix sentinel issue if replica changes IP (#11590)
As Sentinel supports dynamic IP only when using hostnames, there are few leftover addess comparison logic that doesn't take into account that the IP might get change. Co-authored-by: moticless <moticless@github.com>
Diffstat (limited to 'src/sentinel.c')
-rw-r--r--src/sentinel.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/sentinel.c b/src/sentinel.c
index 595a12fea..006d5141b 100644
--- a/src/sentinel.c
+++ b/src/sentinel.c
@@ -598,11 +598,6 @@ void releaseSentinelAddr(sentinelAddr *sa) {
zfree(sa);
}
-/* Return non-zero if two addresses are equal. */
-int sentinelAddrIsEqual(sentinelAddr *a, sentinelAddr *b) {
- return a->port == b->port && !strcasecmp(a->ip,b->ip);
-}
-
/* Return non-zero if the two addresses are equal, either by address
* or by hostname if they could not have been resolved.
*/
@@ -1616,7 +1611,7 @@ int sentinelResetMasterAndChangeAddress(sentinelRedisInstance *master, char *hos
while((de = dictNext(di)) != NULL) {
sentinelRedisInstance *slave = dictGetVal(de);
- if (sentinelAddrIsEqual(slave->addr,newaddr)) continue;
+ if (sentinelAddrOrHostnameEqual(slave->addr,newaddr)) continue;
slaves[numslaves++] = dupSentinelAddr(slave->addr);
}
dictReleaseIterator(di);
@@ -1624,7 +1619,7 @@ int sentinelResetMasterAndChangeAddress(sentinelRedisInstance *master, char *hos
/* If we are switching to a different address, include the old address
* as a slave as well, so that we'll be able to sense / reconfigure
* the old master. */
- if (!sentinelAddrIsEqual(newaddr,master->addr)) {
+ if (!sentinelAddrOrHostnameEqual(newaddr,master->addr)) {
slaves[numslaves++] = dupSentinelAddr(master->addr);
}
@@ -2175,7 +2170,7 @@ void rewriteConfigSentinelOption(struct rewriteConfigState *state) {
* slave's address, a failover is in progress and the slave was
* already successfully promoted. So as the address of this slave
* we use the old master address instead. */
- if (sentinelAddrIsEqual(slave_addr,master_addr))
+ if (sentinelAddrOrHostnameEqual(slave_addr,master_addr))
slave_addr = master->addr;
line = sdscatprintf(sdsempty(),
"sentinel known-replica %s %s %d",