diff options
author | Wang Yuan <wangyuancode@163.com> | 2020-11-03 23:16:11 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-03 17:16:11 +0200 |
commit | 89c78a980807aa1de0a6d0ccde6042450333a783 (patch) | |
tree | 1a2c9244af21df3d2d60602bc0dba0c7acc84f7b /src/rdb.c | |
parent | f210e197f3b9d0b4a81c6c354296da8f1ddad513 (diff) | |
download | redis-89c78a980807aa1de0a6d0ccde6042450333a783.tar.gz |
Disable rehash when redis has child process (#8007)
In redisFork(), we don't set child pid, so updateDictResizePolicy()
doesn't take effect, that isn't friendly for copy-on-write.
The bug was introduced this in redis 6.0: 56258c6
Diffstat (limited to 'src/rdb.c')
-rw-r--r-- | src/rdb.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -1412,6 +1412,7 @@ int rdbSaveBackground(char *filename, rdbSaveInfo *rsi) { server.rdb_save_time_start = time(NULL); server.rdb_child_pid = childpid; server.rdb_child_type = RDB_CHILD_TYPE_DISK; + updateDictResizePolicy(); return C_OK; } return C_OK; /* unreached */ @@ -2618,6 +2619,7 @@ int rdbSaveToSlavesSockets(rdbSaveInfo *rsi) { server.rdb_save_time_start = time(NULL); server.rdb_child_pid = childpid; server.rdb_child_type = RDB_CHILD_TYPE_SOCKET; + updateDictResizePolicy(); close(rdb_pipe_write); /* close write in parent so that it can detect the close on the child. */ if (aeCreateFileEvent(server.el, server.rdb_pipe_read, AE_READABLE, rdbPipeReadHandler,NULL) == AE_ERR) { serverPanic("Unrecoverable error creating server.rdb_pipe_read file event."); |