From 02036575a9c87c12fbd2bdce8f7accdd404968da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Thu, 13 Apr 2017 00:44:04 +0000 Subject: [PATCH] Fix accounting bug in mirror_sessions_current --- lib/MySQL_Session.cpp | 2 +- lib/MySQL_Thread.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 7070017c3..163942d25 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -746,7 +746,6 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C int l=mysql_thread___mirror_max_concurrency; if (thread->mirror_queue_mysql_sessions->len*0.3 > l) l=thread->mirror_queue_mysql_sessions->len*0.3; if (thread->mirror_queue_mysql_sessions_cache->len <= l) { - __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); bool to_cache=true; if (newsess->mybe) { if (newsess->mybe->server_myds) { @@ -754,6 +753,7 @@ void MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C } } if (to_cache) { + __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); thread->mirror_queue_mysql_sessions_cache->add(newsess); } else { delete newsess; diff --git a/lib/MySQL_Thread.cpp b/lib/MySQL_Thread.cpp index 3de736850..0c5b8e97a 100644 --- a/lib/MySQL_Thread.cpp +++ b/lib/MySQL_Thread.cpp @@ -2229,7 +2229,6 @@ __run_skip_1: int l=mysql_thread___mirror_max_concurrency; if (mirror_queue_mysql_sessions->len*0.3 > l) l=mirror_queue_mysql_sessions->len*0.3; if (mirror_queue_mysql_sessions_cache->len <= l) { - __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); bool to_cache=true; if (newsess->mybe) { if (newsess->mybe->server_myds) { @@ -2237,6 +2236,7 @@ __run_skip_1: } } if (to_cache) { + __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); mirror_queue_mysql_sessions_cache->add(newsess); } else { delete newsess; @@ -2809,7 +2809,6 @@ void MySQL_Thread::process_all_sessions() { int l=mysql_thread___mirror_max_concurrency; if (mirror_queue_mysql_sessions->len*0.3 > l) l=mirror_queue_mysql_sessions->len*0.3; if (mirror_queue_mysql_sessions_cache->len <= l) { - __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); bool to_cache=true; if (sess->mybe) { if (sess->mybe->server_myds) { @@ -2817,6 +2816,7 @@ void MySQL_Thread::process_all_sessions() { } } if (to_cache) { + __sync_sub_and_fetch(&GloMTH->status_variables.mirror_sessions_current,1); mirror_queue_mysql_sessions_cache->add(sess); } else { delete sess;