From 5e05348b229b5efe44be30d3aaa94c6e409d8400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Fri, 9 Jun 2017 01:17:09 +0200 Subject: [PATCH] Remove spinlock from MySQL Logger #977 --- include/MySQL_Logger.hpp | 5 +++++ lib/MySQL_Logger.cpp | 12 ++++++++++++ 2 files changed, 17 insertions(+) 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() {