@ -241,7 +241,7 @@ private:
std : : unique_ptr < PtrArray > servers ;
public :
MYSQL * get_connection ( char * hostname , int port , MySQL_Monitor_State_Data * mmsd ) ;
void put_connection ( char * hostname , int port , MYSQL * my ) ;
void put_connection ( char * hostname , MySQL_Monitor_State_Data * mmsd ) ;
void purge_some_connections ( ) ;
void purge_all_connections ( ) ;
MySQL_Monitor_Connection_Pool ( ) {
@ -262,7 +262,6 @@ public:
std : : lock_guard < std : : mutex > lock ( mutex ) ;
pthread_mutex_lock ( & m2 ) ;
MYSQL * my = mmsd - > mysql ;
__conn_register_label :
for ( unsigned int i = 0 ; i < conns - > len ; i + + ) {
MYSQL * my1 = ( MYSQL * ) conns - > index ( i ) ;
// 'my1' can be NULL due to connection cleanup
@ -385,8 +384,8 @@ MYSQL * MySQL_Monitor_Connection_Pool::get_connection(char *hostname, int port,
assert ( my ! = my1 ) ;
}
//proxy_info("Registering MYSQL with FD %d from mmsd %p and MYSQL %p\n", my->net.fd, mmsd, my);
proxy_debug ( PROXY_DEBUG_MONITOR , 7 ,
" Registering MYSQL with FD %d from mmsd %p and MYSQL %p \n " , my - > net . fd , mmsd , my ) ;
conns - > add ( my ) ;
}
# endif // DEBUG
@ -403,56 +402,54 @@ MYSQL * MySQL_Monitor_Connection_Pool::get_connection(char *hostname, int port,
return my ;
}
void MySQL_Monitor_Connection_Pool : : put_connection ( char * hostname , int port , MYSQL * my ) {
void MySQL_Monitor_Connection_Pool : : put_connection ( char * hostname , MySQL_Monitor_State_Data * mmsd ) {
unsigned long long now = monotonic_time ( ) ;
int port = mmsd - > port ;
MYSQL * my = mmsd - > mysql ;
std : : lock_guard < std : : mutex > lock ( mutex ) ;
# ifdef DEBUG
pthread_mutex_lock ( & m2 ) ;
# endif // DEBUG
* ( unsigned long long * ) my - > net . buff = now ;
for ( unsigned int i = 0 ; i < servers - > len ; i + + ) {
MonMySrvC * srv = ( MonMySrvC * ) servers - > index ( i ) ;
if ( srv - > port = = port & & strcmp ( hostname , srv - > address ) = = 0 ) {
srv - > conns - > add ( my ) ;
// pthread_mutex_unlock(&m2);
// return;
# ifdef DEBUG
for ( unsigned int j = 0 ; j < conns - > len ; j + + ) {
MYSQL * my1 = ( MYSQL * ) conns - > index ( j ) ;
if ( my1 = = my ) {
conns - > remove_index_fast ( j ) ;
//proxy_info("Un-registering MYSQL with FD %d\n", my->net.fd);
pthread_mutex_unlock ( & m2 ) ;
return ;
}
}
// LCOV_EXCL_START
assert ( 0 ) ; // it didn't register it
// LCOV_EXCL_STOP
# else
return ;
# endif // DEBUG
# endif
* reinterpret_cast < unsigned long long * > ( my - > net . buff ) = now ;
MonMySrvC * targetSrv = nullptr ;
for ( unsigned int i = 0 ; i < servers - > len ; + + i ) {
auto * srv = static_cast < MonMySrvC * > ( servers - > index ( i ) ) ;
if ( srv - > port = = port & & strcmp ( hostname , srv - > address ) = = 0 ) {
targetSrv = srv ;
break ;
}
}
// if no server was found
MonMySrvC * srv = new MonMySrvC ( hostname , port ) ;
srv - > conns - > add ( my ) ;
servers - > add ( srv ) ;
// pthread_mutex_unlock(&m2);
if ( ! targetSrv ) {
targetSrv = new MonMySrvC ( hostname , port ) ;
servers - > add ( targetSrv ) ;
}
targetSrv - > conns - > add ( my ) ;
# ifdef DEBUG
for ( unsigned int j = 0 ; j < conns - > len ; j + + ) {
MYSQL * my1 = ( MYSQL * ) conns - > index ( j ) ;
if ( my1 = = my ) {
// Remove connection from global debug list
for ( unsigned int j = 0 ; j < conns - > len ; + + j ) {
auto * registered = static_cast < MYSQL * > ( conns - > index ( j ) ) ;
if ( registered = = my ) {
conns - > remove_index_fast ( j ) ;
//proxy_info("Un-registering MYSQL with FD %d\n", my->net.fd);
proxy_debug ( PROXY_DEBUG_MONITOR , 7 ,
" Un-registering MYSQL with FD %d from mmsd %p and MYSQL %p \n " , my - > net . fd , mmsd , mmsd - > mysql ) ;
pthread_mutex_unlock ( & m2 ) ;
mmsd - > mysql = NULL ;
return ;
}
}
// LCOV_EXCL_START
assert ( 0 ) ;
// Should never happen: connection must have been registered
assert ( false & & " MYSQL connection not found in debug registry " ) ;
// LCOV_EXCL_STOP
# endif // DEBUG
# endif
mmsd - > mysql = NULL ;
}
void MySQL_Monitor_Connection_Pool : : purge_some_connections ( ) {
@ -1465,7 +1462,7 @@ void * monitor_ping_thread(const std::vector<MySQL_Monitor_State_Data*>& mmsds)
//proxy_warning("Got error. mmsd %p , MYSQL %p , FD %d : %s\n", mmsd, mmsd->mysql, mmsd->mysql->net.fd, mmsd->mysql_error_msg);
} else {
if ( crc = = false ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
//GloMyMon->My_Conn_Pool->conn_unregister(mmsd->mysql);
mmsd - > mysql = NULL ;
}
@ -1510,10 +1507,10 @@ __fast_exit_monitor_ping_thread:
if ( mmsd - > mysql_error_msg ) {
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
mysql_close ( mmsd - > mysql ) ; // if we reached here we should destroy it
mmsd - > mysql = NULL ;
@ -1521,7 +1518,7 @@ __fast_exit_monitor_ping_thread:
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
//GloMyMon->My_Conn_Pool->conn_unregister(mmsd->mysql);
} else {
# ifdef DEBUG
@ -1884,7 +1881,7 @@ VALGRIND_ENABLE_ERROR_REPORTING;
} else {
if ( crc = = false ) {
if ( mmsd - > mysql ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -1902,7 +1899,7 @@ __fast_exit_monitor_read_only_thread:
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
} else {
proxy_error ( " Got error: mmsd %p , MYSQL %p , FD %d : %s \n " , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
@ -2034,7 +2031,7 @@ void * monitor_group_replication_thread(const std::vector<MySQL_Monitor_State_Da
}
} else {
if ( crc = = false ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -2241,7 +2238,7 @@ __end_process_group_replication_result2:
} else {
if ( crc = = false ) {
if ( mmsd - > mysql ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -2259,7 +2256,7 @@ __fast_exit_monitor_group_replication_thread:
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
} else {
proxy_error ( " Got error. mmsd %p , MYSQL %p , FD %d : %s \n " , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
@ -2409,11 +2406,11 @@ void * monitor_galera_thread(const std::vector<MySQL_Monitor_State_Data*>& data)
mysql_close ( mmsd - > mysql ) ;
mmsd - > mysql = NULL ;
} else {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
# else
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
# endif // TEST_GALERA
}
@ -2642,7 +2639,7 @@ __end_process_galera_result2:
} else {
if ( crc = = false ) {
if ( mmsd - > mysql ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -2660,7 +2657,7 @@ __fast_exit_monitor_galera_thread:
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
} else {
proxy_error ( " Got error. mmsd %p , MYSQL %p , FD %d : %s \n " , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
@ -2820,7 +2817,7 @@ void * monitor_replication_lag_thread(const std::vector<MySQL_Monitor_State_Data
} else {
if ( crc = = false ) {
//GloMyMon->My_Conn_Pool->conn_unregister(mmsd->mysql);
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -2930,9 +2927,7 @@ __exit_monitor_replication_lag_thread:
rc = ( * proxy_sqlite3_bind_int64 ) ( statement , 4 , ( mmsd - > mysql_error_msg ? 0 : mmsd - > t2 - mmsd - > t1 ) ) ; ASSERT_SQLITE_OK ( rc , mmsd - > mondb ) ;
if ( mmsd - > interr = = 0 & & mmsd - > result ) {
int num_fields = 0 ;
int k = 0 ;
MYSQL_FIELD * fields = NULL ;
int j = - 1 ;
num_fields = mysql_num_fields ( mmsd - > result ) ;
fields = mysql_fetch_fields ( mmsd - > result ) ;
if ( fields & & ( num_fields = = 2 ) ) {
@ -2980,17 +2975,17 @@ __exit_monitor_replication_lag_thread:
if ( mmsd - > mysql ) {
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
mysql_close ( mmsd - > mysql ) ;
mmsd - > mysql = NULL ;
}
} else {
if ( mmsd - > mysql ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
//GloMyMon->My_Conn_Pool->conn_unregister(mmsd->mysql);
mmsd - > mysql = NULL ;
}
@ -3002,26 +2997,26 @@ __fast_exit_monitor_replication_lag_thread:
if ( mmsd - > mysql_error_msg ) {
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
mysql_close ( mmsd - > mysql ) ; // if we reached here we should destroy it
mmsd - > mysql = NULL ;
} else {
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
//GloMyMon->My_Conn_Pool->conn_unregister(mmsd->mysql);
} else {
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
mysql_close ( mmsd - > mysql ) ; // set_wait_timeout failed
}
@ -3029,11 +3024,11 @@ __fast_exit_monitor_replication_lag_thread:
} else { // really not sure how we reached here, drop it
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
mysql_close ( mmsd - > mysql ) ;
mmsd - > mysql = NULL ;
}
@ -3764,6 +3759,7 @@ unique_ptr<MySQL_Monitor_State_Data> init_mmsd_with_conn(
" timeout or error in creating new connection: %s " , mmsd - > mysql_error_msg
) ;
mmsd - > mysql_error_msg = strdup ( conn_err_msg . str . c_str ( ) ) ;
mmsd - > task_result_ = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_FAILED ;
}
}
@ -4068,7 +4064,7 @@ void handle_mmsd_mysql_conn(MySQL_Monitor_State_Data* mmsd) {
if ( mmsd - > created_conn ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
} else {
proxy_error (
" Error by 'set_wait_timeout' for new connection. mmsd %p , MYSQL %p , FD %d : %s \n " ,
@ -4077,13 +4073,11 @@ void handle_mmsd_mysql_conn(MySQL_Monitor_State_Data* mmsd) {
MyHGM - > p_update_mysql_error_counter (
p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql )
) ;
if ( mmsd - > get_task_result ( ) = = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_SUCCESS ) {
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
}
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
mysql_close ( mmsd - > mysql ) ;
}
} else {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
}
}
@ -6451,7 +6445,7 @@ __exit_monitor_aws_aurora_HG_thread:
} else {
if ( crc = = false ) {
if ( mmsd - > mysql ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
}
@ -6462,18 +6456,18 @@ __fast_exit_monitor_aws_aurora_HG_thread:
if ( mmsd - > mysql_error_msg ) {
# ifdef DEBUG
proxy_error ( " Error after %lldms: server %s:%d , mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
# else
proxy_error ( " Error after %lldms on server %s:%d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd - > hostname , mmsd - > port , mmsd - > mysql_error_msg ) ;
# endif // DEBUG
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
GloMyMon - > My_Conn_Pool - > conn_unregister ( mmsd ) ;
mysql_close ( mmsd - > mysql ) ; // if we reached here we should destroy it
mmsd - > mysql = NULL ;
} else {
if ( crc ) {
bool rc = mmsd - > set_wait_timeout ( ) ;
if ( rc ) {
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
} else {
proxy_error ( " Error after %lldms: mmsd %p , MYSQL %p , FD %d : %s \n " , ( mmsd - > t2 - mmsd - > t1 ) / 1000 , mmsd , mmsd - > mysql , mmsd - > mysql - > net . fd , mmsd - > mysql_error_msg ) ;
MyHGM - > p_update_mysql_error_counter ( p_mysql_error_type : : proxysql , mmsd - > hostgroup_id , mmsd - > hostname , mmsd - > port , mysql_errno ( mmsd - > mysql ) ) ;
@ -7377,7 +7371,7 @@ void* monitor_ping_process_ready_task_thread(const std::vector<MySQL_Monitor_Sta
if ( task_result = = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_SUCCESS ) {
__sync_fetch_and_add ( & GloMyMon - > ping_check_OK , 1 ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
GloMyMon - > My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
} else {
__sync_fetch_and_add ( & GloMyMon - > ping_check_ERR , 1 ) ;
@ -7608,7 +7602,7 @@ bool MySQL_Monitor::monitor_read_only_process_ready_tasks(const std::vector<MySQ
if ( task_result = = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_SUCCESS ) {
__sync_fetch_and_add ( & read_only_check_OK , 1 ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
} else {
__sync_fetch_and_add ( & read_only_check_ERR , 1 ) ;
@ -7831,7 +7825,7 @@ bool MySQL_Monitor::monitor_group_replication_process_ready_tasks(const std::vec
assert ( task_result ! = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_PENDING ) ;
if ( task_result = = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_SUCCESS ) {
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
} else {
@ -8079,7 +8073,7 @@ bool MySQL_Monitor::monitor_replication_lag_process_ready_tasks(const std::vecto
if ( task_result = = MySQL_Monitor_State_Data_Task_Result : : TASK_RESULT_SUCCESS ) {
__sync_fetch_and_add ( & replication_lag_check_OK , 1 ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
} else {
__sync_fetch_and_add ( & replication_lag_check_ERR , 1 ) ;
@ -8199,9 +8193,7 @@ bool MySQL_Monitor::monitor_replication_lag_process_ready_tasks(const std::vecto
rc = ( * proxy_sqlite3_bind_int64 ) ( statement , 4 , ( mmsd - > mysql_error_msg ? 0 : mmsd - > t2 - mmsd - > t1 ) ) ; ASSERT_SQLITE_OK ( rc , mmsd - > mondb ) ;
if ( mmsd - > interr = = 0 & & mmsd - > result ) {
int num_fields = 0 ;
int k = 0 ;
MYSQL_FIELD * fields = NULL ;
int j = - 1 ;
num_fields = mysql_num_fields ( mmsd - > result ) ;
fields = mysql_fetch_fields ( mmsd - > result ) ;
if ( fields & & ( num_fields = = 2 ) ) {
@ -8305,11 +8297,11 @@ bool MySQL_Monitor::monitor_galera_process_ready_tasks(const std::vector<MySQL_M
mysql_close ( mmsd - > mysql ) ;
mmsd - > mysql = NULL ;
} else {
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
}
# else
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd - > port , mmsd - > mysql ) ;
My_Conn_Pool - > put_connection ( mmsd - > hostname , mmsd ) ;
mmsd - > mysql = NULL ;
# endif
} else {