From 1a7c6f5e04b0c72a32fe7515b51cfc1cab0686cf Mon Sep 17 00:00:00 2001 From: antirez Date: Tue, 12 May 2015 17:03:53 +0200 Subject: [PATCH] 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. --- src/sentinel.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/sentinel.c b/src/sentinel.c index 916ab994c..40ffcce83 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -2498,7 +2498,10 @@ void sentinelSendPeriodicCommands(sentinelRedisInstance *ri) { retval = redisAsyncCommand(ri->link->cc, sentinelInfoReplyCallback, ri, "INFO"); 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. */ sentinelSendPing(ri); } else if ((now - ri->last_pub_time) > SENTINEL_PUBLISH_PERIOD) {