Skip to content

Commit 9fd0105

Browse files
committed
Fix for bug 374, thanks to Jeremy Zawodny for reporting and tracing why it was crashing.
1 parent 0c2f75c commit 9fd0105

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/replication.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,17 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
366366
}
367367
redisLog(REDIS_NOTICE, "MASTER <-> SLAVE sync: Loading DB in memory");
368368
emptyDb();
369+
/* Before loading the DB into memory we need to delete the readable
370+
* handler, otherwise it will get called recursively since
371+
* rdbLoad() will call the event loop to process events from time to
372+
* time for non blocking loading. */
373+
aeDeleteFileEvent(server.el,server.repl_transfer_s,AE_READABLE);
369374
if (rdbLoad(server.dbfilename) != REDIS_OK) {
370375
redisLog(REDIS_WARNING,"Failed trying to load the MASTER synchronization DB from disk");
371376
replicationAbortSyncTransfer();
372377
return;
373378
}
374379
/* Final setup of the connected slave <- master link */
375-
aeDeleteFileEvent(server.el,server.repl_transfer_s,AE_READABLE);
376380
zfree(server.repl_transfer_tmpfile);
377381
close(server.repl_transfer_fd);
378382
server.master = createClient(server.repl_transfer_s);

0 commit comments

Comments
 (0)