summaryrefslogtreecommitdiff
path: root/src/replication.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/replication.c')
-rw-r--r--src/replication.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/replication.c b/src/replication.c
index 064d2bece..328382570 100644
--- a/src/replication.c
+++ b/src/replication.c
@@ -575,7 +575,7 @@ int startBgsaveForReplication(int mincapa) {
* otherwise slave will miss repl-stream-db. */
if (rsiptr) {
if (socket_target)
- retval = rdbSaveToSlavesSockets(rsiptr);
+ retval = rdbSaveToSlavesSockets(mincapa, rsiptr);
else
retval = rdbSaveBackground(server.rdb_filename,rsiptr);
} else {
@@ -593,6 +593,7 @@ int startBgsaveForReplication(int mincapa) {
client *slave = ln->value;
if (slave->replstate == SLAVE_STATE_WAIT_BGSAVE_START) {
+ slave->replstate = REPL_STATE_NONE;
slave->flags &= ~CLIENT_SLAVE;
listDelNode(server.slaves,ln);
addReplyError(slave,
@@ -611,8 +612,11 @@ int startBgsaveForReplication(int mincapa) {
client *slave = ln->value;
if (slave->replstate == SLAVE_STATE_WAIT_BGSAVE_START) {
- replicationSetupSlaveForFullResync(slave,
- getPsyncInitialOffset());
+ /* Check slave has at least the minimum capabilities */
+ if ((mincapa & slave->slave_capa) != mincapa)
+ continue;
+ replicationSetupSlaveForFullResync(slave,
+ getPsyncInitialOffset());
}
}
}