mirror of
https://github.com/fluencelabs/redis
synced 2025-04-26 19:12:14 +00:00
Rename rdb asynchronously
This commit is contained in:
parent
6e4f70b817
commit
2bc8db9ca5
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "cluster.h"
|
#include "cluster.h"
|
||||||
|
#include "bio.h"
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -1616,14 +1617,20 @@ void readSyncBulkPayload(connection *conn) {
|
|||||||
killRDBChild();
|
killRDBChild();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Rename rdb like renaming rewrite aof asynchronously. */
|
||||||
|
int old_rdb_fd = open(server.rdb_filename,O_RDONLY|O_NONBLOCK);
|
||||||
if (rename(server.repl_transfer_tmpfile,server.rdb_filename) == -1) {
|
if (rename(server.repl_transfer_tmpfile,server.rdb_filename) == -1) {
|
||||||
serverLog(LL_WARNING,
|
serverLog(LL_WARNING,
|
||||||
"Failed trying to rename the temp DB into %s in "
|
"Failed trying to rename the temp DB into %s in "
|
||||||
"MASTER <-> REPLICA synchronization: %s",
|
"MASTER <-> REPLICA synchronization: %s",
|
||||||
server.rdb_filename, strerror(errno));
|
server.rdb_filename, strerror(errno));
|
||||||
cancelReplicationHandshake();
|
cancelReplicationHandshake();
|
||||||
|
if (old_rdb_fd != -1) close(old_rdb_fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/* Close old rdb asynchronously. */
|
||||||
|
if (old_rdb_fd != -1) bioCreateBackgroundJob(BIO_CLOSE_FILE,(void*)(long)old_rdb_fd,NULL,NULL);
|
||||||
|
|
||||||
if (rdbLoad(server.rdb_filename,&rsi,RDBFLAGS_REPLICATION) != C_OK) {
|
if (rdbLoad(server.rdb_filename,&rsi,RDBFLAGS_REPLICATION) != C_OK) {
|
||||||
serverLog(LL_WARNING,
|
serverLog(LL_WARNING,
|
||||||
"Failed trying to load the MASTER synchronization "
|
"Failed trying to load the MASTER synchronization "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user