From 41d64a75169a6ddfb9f27a720579f3615c13610f Mon Sep 17 00:00:00 2001 From: antirez Date: Thu, 31 Jan 2013 16:33:26 +0100 Subject: [PATCH] After SLAVEOF don't allow chained slaves to PSYNC. --- src/replication.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/replication.c b/src/replication.c index 0458dc0e..157cbcfe 100644 --- a/src/replication.c +++ b/src/replication.c @@ -87,7 +87,7 @@ void resizeReplicationBacklog(long long newsize) { } void freeReplicationBacklog(void) { - redisAssert(server.repl_backlog != NULL); + redisAssert(listLength(server.slaves) == 0); zfree(server.repl_backlog); server.repl_backlog = NULL; } @@ -1217,6 +1217,7 @@ void slaveofCommand(redisClient *c) { if (server.master) freeClient(server.master); disconnectSlaves(); /* Force our slaves to resync with us as well. */ replicationDiscardCachedMaster(); /* Don't try a PSYNC. */ + freeReplicationBacklog(); /* Don't allow our chained slaves to PSYNC. */ cancelReplicationHandshake(); server.repl_state = REDIS_REPL_CONNECT; redisLog(REDIS_NOTICE,"SLAVE OF %s:%d enabled (user request)",