Replace the spinlock on ProxySQL_Admin::wrlock with a pthread mutex or wrlock

pull/879/head
Daniele 9 years ago
parent 3d34b7fe47
commit fda5470688

@ -0,0 +1,4 @@
// If defined then active pthread mutex in ProxySQL_Admin else use the wrlock
#define PA_PTHREAD_MUTEX

@ -1,5 +1,7 @@
#ifndef __CLASS_PROXYSQL_ADMIN_H
#define __CLASS_PROXYSQL_ADMIN_H
#include "proxy_defines.h"
#include "proxysql.h"
#include "cpp.h"
#include <vector>
@ -58,8 +60,19 @@ class ProxySQL_Admin {
int main_poll_nfds;
struct pollfd *main_poll_fds;
int *main_callback_func;
rwlock_t rwlock;
#ifdef PA_PTHREAD_MUTEX
pthread_mutex_t mysql_servers_lock;
#else
rwlock_t mysql_servers_rwlock;
#endif
void wrlock();
void wrunlock();

@ -2450,8 +2450,18 @@ ProxySQL_Admin::ProxySQL_Admin() {
}
SPA=this;
//Initialize locker
spinlock_rwlock_init(&rwlock);
#ifdef PA_PTHREAD_MUTEX
pthread_mutex_init(&mysql_servers_lock, NULL);
#else
spinlock_rwlock_init(&mysql_servers_rwlock);
#endif
variables.admin_credentials=strdup("admin:admin");
variables.stats_credentials=strdup("stats:stats");
if (GloVars.__cmd_proxysql_admin_socket) {
@ -2493,11 +2503,19 @@ void ProxySQL_Admin::wrunlock() {
};
void ProxySQL_Admin::mysql_servers_wrlock() {
spin_wrlock(&mysql_servers_rwlock);
#ifdef PA_PTHREAD_MUTEX
pthread_mutex_lock(&mysql_servers_lock);
#else
spin_wrlock(&mysql_servers_rwlock);
#endif
};
void ProxySQL_Admin::mysql_servers_wrunlock() {
spin_wrunlock(&mysql_servers_rwlock);
#ifdef PA_PTHREAD_MUTEX
pthread_mutex_unlock(&mysql_servers_lock);
#else
spin_wrunlock(&mysql_servers_rwlock);
#endif
};
void ProxySQL_Admin::print_version() {

Loading…
Cancel
Save