Prevent RDB autosave from overwriting full resync results

During the full database resync we may still have unsaved changes
on the receiving side. This causes a race condition between
synced data rename/load and the rename of rdbSave tempfile.
This commit is contained in:
Andrey Bugaevskiy 2018-09-19 19:58:39 +03:00
parent 0d6f11f4d1
commit 98a64523c4

View File

@ -1814,6 +1814,13 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
}
}
/* Stop background saving for obsolete database state. */
server.dirty = 0;
if (server.rdb_child_pid != -1) {
kill(server.rdb_child_pid,SIGUSR1);
rdbRemoveTempFile(server.rdb_child_pid);
}
/* Prepare a suitable temp file for bulk transfer */
while(maxtries--) {
snprintf(tmpfile,256,