diff options
author | antirez <antirez@gmail.com> | 2014-10-29 12:48:22 +0100 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2014-10-29 12:48:22 +0100 |
commit | 9ec22d9223ca3d74aa81dd5af86809ceeb730670 (patch) | |
tree | 71f7c313ebdbc1b643f17bc1b051076c86e7d00c /src | |
parent | 4b8f4b90b904c803cdc4a3ba82fee6e8ee8423fe (diff) | |
download | redis-9ec22d9223ca3d74aa81dd5af86809ceeb730670.tar.gz |
Diskless replication: missing listRewind() added.memsync
This caused BGSAVE to be triggered a second time without any need when
we switch from socket to disk target via the command
CONFIG SET repl-diskless-sync no
and there is already a slave waiting for the BGSAVE to start.
Also comments clarified about what is happening.
Diffstat (limited to 'src')
-rw-r--r-- | src/replication.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/replication.c b/src/replication.c index 43d5b6935..77f9fa8bc 100644 --- a/src/replication.c +++ b/src/replication.c @@ -2062,7 +2062,11 @@ void replicationCron(void) { * if there was a recent socket -> disk config change. */ if (startBgsaveForReplication() == REDIS_OK) { /* It started! We need to change the state of slaves - * from WAIT_BGSAVE_START to WAIT_BGSAVE_END. */ + * from WAIT_BGSAVE_START to WAIT_BGSAVE_END in case + * the current target is disk. Otherwise it was already done + * by rdbSaveToSlavesSockets() which is called by + * startBgsaveForReplication(). */ + listRewind(server.slaves,&li); while((ln = listNext(&li))) { redisClient *slave = ln->value; if (slave->replstate == REDIS_REPL_WAIT_BGSAVE_START) |