Sentinel: PING trigger improved
It's ok to ping as soon as the ping period has elapsed since we received the last PONG, but it's not good that we ping again if there is a pending ping... With this change we'll send a new ping if there is one pending only if two times the ping period elapsed since the ping which is still pending was sent.
This commit is contained in:
parent
f54299a9e3
commit
1a7c6f5e04
@ -2498,7 +2498,10 @@ void sentinelSendPeriodicCommands(sentinelRedisInstance *ri) {
|
|||||||
retval = redisAsyncCommand(ri->link->cc,
|
retval = redisAsyncCommand(ri->link->cc,
|
||||||
sentinelInfoReplyCallback, ri, "INFO");
|
sentinelInfoReplyCallback, ri, "INFO");
|
||||||
if (retval == REDIS_OK) ri->link->pending_commands++;
|
if (retval == REDIS_OK) ri->link->pending_commands++;
|
||||||
} else if ((now - ri->link->last_pong_time) > ping_period) {
|
} else if ((now - ri->link->last_pong_time) > ping_period &&
|
||||||
|
(ri->link->last_ping_time == 0 ||
|
||||||
|
now - ri->link->last_ping_time > ping_period*2))
|
||||||
|
{
|
||||||
/* Send PING to all the three kinds of instances. */
|
/* Send PING to all the three kinds of instances. */
|
||||||
sentinelSendPing(ri);
|
sentinelSendPing(ri);
|
||||||
} else if ((now - ri->last_pub_time) > SENTINEL_PUBLISH_PERIOD) {
|
} else if ((now - ri->last_pub_time) > SENTINEL_PUBLISH_PERIOD) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user