From 2085e21dca77727be6f86f1caa08329b78888aba Mon Sep 17 00:00:00 2001 From: John Sully Date: Thu, 1 Oct 2020 00:08:54 +0000 Subject: [PATCH] Fix module test failures due to locking Former-commit-id: 420ccdfbaebc452b9b374b54c6ebeec4a3ffea36 --- src/module.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/module.cpp b/src/module.cpp index c37071f87..73e176e7a 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -329,6 +329,7 @@ static int s_cAcquisitionsServer = 0; static int s_cAcquisitionsModule = 0; static std::mutex s_mutex; static std::condition_variable s_cv; +static std::recursive_mutex s_mutexModule; typedef void (*RedisModuleForkDoneHandler) (int exitcode, int bysignal, void *user_data); @@ -5055,6 +5056,7 @@ void moduleAcquireGIL(int fServerThread) { } else { + s_mutexModule.lock(); ++s_cAcquisitionsModule; fModuleGILWlocked++; } @@ -5079,6 +5081,8 @@ int moduleTryAcquireGIL(bool fServerThread) { } else { + if (!s_mutexModule.try_lock()) + return 1; ++s_cAcquisitionsModule; fModuleGILWlocked++; } @@ -5098,6 +5102,7 @@ void moduleReleaseGIL(int fServerThread) { } else { + s_mutexModule.unlock(); --s_cAcquisitionsModule; fModuleGILWlocked--; }