]> git.saurik.com Git - redis.git/commitdiff
Bug fix: slaves being pinged every second
authorSaj Goonatilleke <sg@redu.cx>
Thu, 5 Jul 2012 04:29:27 +0000 (14:29 +1000)
committerantirez <antirez@gmail.com>
Wed, 5 Sep 2012 14:01:01 +0000 (16:01 +0200)
REDIS_REPL_PING_SLAVE_PERIOD controls how often the master should
transmit a heartbeat (PING) to its slaves.  This period, which defaults
to 10, is measured in seconds.

Redis 2.4 masters used to ping their slaves every ten seconds, just like
it says on the tin.

The Redis 2.6 masters I have been experimenting with, on the other hand,
ping their slaves *every second*.  (master_last_io_seconds_ago never
approaches 10.)  I think the ping period was inadvertently slashed to
one-tenth of its nominal value around the time REDIS_HZ was introduced.
This commit reintroduces correct ping schedule behaviour.

src/redis.h
src/replication.c

index 9c9b72f878a5135a7514e9322f9a47254616da34..1e1590830e3ef8f0fa5e55f9f933b2a242015bfb 100644 (file)
@@ -544,7 +544,7 @@ struct redisServer {
     char *masterauth;               /* AUTH with this password with master */
     char *masterhost;               /* Hostname of master */
     int masterport;                 /* Port of master */
-    int repl_ping_slave_period;     /* Master pings the salve every N seconds */
+    int repl_ping_slave_period;     /* Master pings the slave every N seconds */
     int repl_timeout;               /* Timeout after N seconds of master idle */
     redisClient *master;     /* Client that is master for this slave */
     int repl_syncio_timeout; /* Timeout for synchronous I/O calls */
index 72b88977afeb7aa5f7b161fc15a7445726aea2f3..b43e9927f5886cc1c77ede523d38a68ba7fda599 100644 (file)
@@ -744,7 +744,7 @@ void replicationCron(void) {
      * So slaves can implement an explicit timeout to masters, and will
      * be able to detect a link disconnection even if the TCP connection
      * will not actually go down. */
-    if (!(server.cronloops % (server.repl_ping_slave_period*10))) {
+    if (!(server.cronloops % (server.repl_ping_slave_period * REDIS_HZ))) {
         listIter li;
         listNode *ln;