diff --git a/include/MySQL_Logger.hpp b/include/MySQL_Logger.hpp index a00e52dd4..22920685f 100644 --- a/include/MySQL_Logger.hpp +++ b/include/MySQL_Logger.hpp @@ -3,6 +3,7 @@ #include "proxysql.h" #include "cpp.h" +#define PROXYSQL_LOGGER_PTHREAD_MUTEX class MySQL_Event { private: @@ -39,7 +40,11 @@ class MySQL_Logger { char *datadir; unsigned int log_file_id; unsigned int max_log_file_size; +#ifdef PROXYSQL_LOGGER_PTHREAD_MUTEX + pthread_mutex_t wmutex; +#else rwlock_t rwlock; +#endif void wrlock(); void wrunlock(); std::fstream *logfile; diff --git a/lib/MySQL_Logger.cpp b/lib/MySQL_Logger.cpp index af18b3674..60fc3d710 100644 --- a/lib/MySQL_Logger.cpp +++ b/lib/MySQL_Logger.cpp @@ -148,7 +148,11 @@ MySQL_Logger::MySQL_Logger() { base_filename=NULL; datadir=NULL; base_filename=strdup((char *)""); +#ifdef PROXYSQL_LOGGER_PTHREAD_MUTEX + pthread_mutex_init(&wmutex,NULL); +#else spinlock_rwlock_init(&rwlock); +#endif logfile=NULL; log_file_id=0; max_log_file_size=100*1024*1024; @@ -162,11 +166,19 @@ MySQL_Logger::~MySQL_Logger() { }; void MySQL_Logger::wrlock() { +#ifdef PROXYSQL_LOGGER_PTHREAD_MUTEX + pthread_mutex_lock(&wmutex); +#else spin_wrlock(&rwlock); +#endif }; void MySQL_Logger::wrunlock() { +#ifdef PROXYSQL_LOGGER_PTHREAD_MUTEX + pthread_mutex_unlock(&wmutex); +#else spin_wrunlock(&rwlock); +#endif }; void MySQL_Logger::flush_log() {