diff --git a/src/rdb.cpp b/src/rdb.cpp index ee66ef93e..bbd320b6b 100644 --- a/src/rdb.cpp +++ b/src/rdb.cpp @@ -2665,6 +2665,9 @@ public: } ~rdbAsyncWorkThread() { + fExit = true; + while (m_lockPause.fOwnLock()) + m_lockPause.unlock(); if (m_thread.joinable()) endWork(); } diff --git a/src/server.cpp b/src/server.cpp index 0dcae55b0..d9c4b52d6 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -7394,7 +7394,13 @@ int main(int argc, char **argv) { } InitServerLast(); - loadDataFromDisk(); + + try { + loadDataFromDisk(); + } catch (ShutdownException) { + exit(EXIT_SUCCESS); + } + if (g_pserver->cluster_enabled) { if (verifyClusterConfigWithData() == C_ERR) { serverLog(LL_WARNING,