diff options
author | zhaozhao.zz <zhaozhao.zz@alibaba-inc.com> | 2018-03-29 23:20:58 +0800 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2018-10-09 18:30:49 +0200 |
commit | 6aa8ac70a443f5dece6fe4678319a6a2d4570e6c (patch) | |
tree | dc7640ddff9fcd9c31939f3834017c9bf126be73 | |
parent | 48040b0266c2e60b20b8c83f327845a6c640016a (diff) | |
download | redis-6aa8ac70a443f5dece6fe4678319a6a2d4570e6c.tar.gz |
debug: avoid free client unexpectedly when reload & loadaof
-rw-r--r-- | src/debug.c | 10 |
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; } |