From a8d89641cf5b3c6f310ee131e346d43b8b7c58eb Mon Sep 17 00:00:00 2001 From: John Sully Date: Fri, 19 Apr 2019 17:08:54 -0400 Subject: [PATCH] Fix crash near boot when adding replicas and dumping database Former-commit-id: 01eb0a3c7f01d381ffb66c3fec0214d07e8594de --- src/server.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/server.cpp b/src/server.cpp index de128018d..355e1e0b3 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2489,6 +2489,20 @@ void initServerConfig(void) { /* Multithreading */ server.cthreads = CONFIG_DEFAULT_THREADS; server.fThreadAffinity = CONFIG_DEFAULT_THREAD_AFFINITY; + + server.db = (redisDb*)zmalloc(sizeof(redisDb)*server.dbnum, MALLOC_LOCAL); + + /* Create the Redis databases, and initialize other internal state. */ + for (int j = 0; j < server.dbnum; j++) { + server.db[j].pdict = dictCreate(&dbDictType,NULL); + server.db[j].expires = dictCreate(&keyptrDictType,NULL); + server.db[j].blocking_keys = dictCreate(&keylistDictType,NULL); + server.db[j].ready_keys = dictCreate(&objectKeyPointerValueDictType,NULL); + server.db[j].watched_keys = dictCreate(&keylistDictType,NULL); + server.db[j].id = j; + server.db[j].avg_ttl = 0; + server.db[j].defrag_later = listCreate(); + } } extern char **environ; @@ -2883,19 +2897,6 @@ void initServer(void) { createSharedObjects(); adjustOpenFilesLimit(); - server.db = (redisDb*)zmalloc(sizeof(redisDb)*server.dbnum, MALLOC_LOCAL); - - /* Create the Redis databases, and initialize other internal state. */ - for (int j = 0; j < server.dbnum; j++) { - server.db[j].pdict = dictCreate(&dbDictType,NULL); - server.db[j].expires = dictCreate(&keyptrDictType,NULL); - server.db[j].blocking_keys = dictCreate(&keylistDictType,NULL); - server.db[j].ready_keys = dictCreate(&objectKeyPointerValueDictType,NULL); - server.db[j].watched_keys = dictCreate(&keylistDictType,NULL); - server.db[j].id = j; - server.db[j].avg_ttl = 0; - server.db[j].defrag_later = listCreate(); - } evictionPoolAlloc(); /* Initialize the LRU keys pool. */ server.pubsub_channels = dictCreate(&keylistDictType,NULL); server.pubsub_patterns = listCreate();