diff --git a/include/MySQL_Data_Stream.h b/include/MySQL_Data_Stream.h index b65b3d280..24bc08658 100644 --- a/include/MySQL_Data_Stream.h +++ b/include/MySQL_Data_Stream.h @@ -203,13 +203,7 @@ class MySQL_Data_Stream void return_MySQL_Connection_To_Pool(); - void destroy_MySQL_Connection_From_Pool(bool sq) { - MySQL_Connection *mc=myconn; - detach_connection(); - unplug_backend(); - mc->send_quit=sq; - MyHGM->destroy_MyConn_from_pool(mc); - } + void destroy_MySQL_Connection_From_Pool(bool sq); void free_mysql_real_query(); void reinit_queues(); void destroy_queues(); diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index adadd2e92..11b4852d2 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -1374,7 +1374,9 @@ int MySQL_Session::handler_again___status_PINGING_SERVER() { if (rc==0) { myconn->async_state_machine=ASYNC_IDLE; myconn->compute_unknown_transaction_status(); - if (mysql_thread___multiplexing && (myconn->reusable==true) && myds->myconn->IsActiveTransaction()==false && myds->myconn->MultiplexDisabled()==false) { + //if (mysql_thread___multiplexing && (myconn->reusable==true) && myds->myconn->IsActiveTransaction()==false && myds->myconn->MultiplexDisabled()==false) { + // due to issue #2096 we disable the global check on mysql_thread___multiplexing + if ((myconn->reusable==true) && myds->myconn->IsActiveTransaction()==false && myds->myconn->MultiplexDisabled()==false) { myds->return_MySQL_Connection_To_Pool(); } else { myds->destroy_MySQL_Connection_From_Pool(true); diff --git a/lib/mysql_data_stream.cpp b/lib/mysql_data_stream.cpp index 49a6ec7d8..630f0e52c 100644 --- a/lib/mysql_data_stream.cpp +++ b/lib/mysql_data_stream.cpp @@ -1382,3 +1382,12 @@ void MySQL_Data_Stream::destroy_queues() { queue_destroy(queueIN); queue_destroy(queueOUT); } + +void MySQL_Data_Stream::destroy_MySQL_Connection_From_Pool(bool sq) { + MySQL_Connection *mc=myconn; + mc->last_time_used=sess->thread->curtime; + detach_connection(); + unplug_backend(); + mc->send_quit=sq; + MyHGM->destroy_MyConn_from_pool(mc); +}