summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhaozhao.zz <zhaozhao.zz@alibaba-inc.com>2018-03-29 23:20:58 +0800
committerantirez <antirez@gmail.com>2018-10-09 18:30:49 +0200
commit6aa8ac70a443f5dece6fe4678319a6a2d4570e6c (patch)
treedc7640ddff9fcd9c31939f3834017c9bf126be73
parent48040b0266c2e60b20b8c83f327845a6c640016a (diff)
downloadredis-6aa8ac70a443f5dece6fe4678319a6a2d4570e6c.tar.gz
debug: avoid free client unexpectedly when reload & loadaof
-rw-r--r--src/debug.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/debug.c b/src/debug.c
index a66390dbb..5a8190c96 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -345,7 +345,10 @@ NULL
return;
}
emptyDb(-1,EMPTYDB_NO_FLAGS,NULL);
- if (rdbLoad(server.rdb_filename,NULL) != C_OK) {
+ aeDeleteFileEvent(server.el,c->fd,AE_READABLE);
+ int ret = rdbLoad(server.rdb_filename,NULL);
+ aeCreateFileEvent(server.el,c->fd,AE_READABLE,readQueryFromClient,c);
+ if (ret != C_OK) {
addReplyError(c,"Error trying to load the RDB dump");
return;
}
@@ -354,7 +357,10 @@ NULL
} else if (!strcasecmp(c->argv[1]->ptr,"loadaof")) {
if (server.aof_state != AOF_OFF) flushAppendOnlyFile(1);
emptyDb(-1,EMPTYDB_NO_FLAGS,NULL);
- if (loadAppendOnlyFile(server.aof_filename) != C_OK) {
+ aeDeleteFileEvent(server.el,c->fd,AE_READABLE);
+ int ret = loadAppendOnlyFile(server.aof_filename);
+ aeCreateFileEvent(server.el,c->fd,AE_READABLE,readQueryFromClient,c);
+ if (ret != C_OK) {
addReply(c,shared.err);
return;
}