From 17f9953a1836e7b30c61528ddda2fd0552e9dffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Mon, 29 May 2017 21:07:15 +0200 Subject: [PATCH] Added mutex for LOAD MYSQL USERS TO RUNTIME --- .gitignore | 1 + lib/ProxySQL_Admin.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 462d5f32c..f152e1d01 100644 --- a/.gitignore +++ b/.gitignore @@ -106,6 +106,7 @@ deps/pcre/pcre/ deps/protobuf/protobuf-2.6.1/ deps/sqlite3/sqlite-amalgamation-3150000/ +deps/sqlite3/sqlite-amalgamation-3190200/ test/.vagrant .DS_Store diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index ba1484381..25eff60c0 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -142,6 +142,7 @@ int rc, arg_on=1, arg_off=0; pthread_mutex_t sock_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t admin_mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_mutex_t users_mutex = PTHREAD_MUTEX_INITIALIZER; #define LINESIZE 2048 @@ -830,9 +831,11 @@ bool admin_handler_command_load_or_save(char *query_no_space, unsigned int query } if (legitname) { proxy_info("Loading user %s\n", name); - SPA->send_MySQL_OK(&sess->client_myds->myprot, NULL); + pthread_mutex_lock(&users_mutex); SPA->public_add_active_users(USERNAME_BACKEND, name); SPA->public_add_active_users(USERNAME_FRONTEND, name); + pthread_mutex_unlock(&users_mutex); + SPA->send_MySQL_OK(&sess->client_myds->myprot, NULL); } else { proxy_info("Tried to load invalid user %s\n", name); char *s=(char *)"Invalid name %s"; @@ -3925,7 +3928,9 @@ void ProxySQL_Admin::__attach_db(SQLite3DB *db1, SQLite3DB *db2, char *alias) { void ProxySQL_Admin::init_users() { + pthread_mutex_lock(&users_mutex); __refresh_users(); + pthread_mutex_unlock(&users_mutex); } void ProxySQL_Admin::init_mysql_servers() {