Closes #417
Closes #418
pull/420/head
René Cannaò 11 years ago
parent 0449d8f38e
commit 2ab0ce82bf

@ -60,7 +60,7 @@ class MySrvC { // MySQL Server Container
MySrvConnList *ConnectionsFree;
MySrvC(char *, uint16_t, unsigned int, enum MySerStatus, unsigned int, unsigned int _max_connections, unsigned int _max_replication_lag);
~MySrvC();
void connect_error();
void connect_error(int);
};
class MySrvList { // MySQL Server List

@ -125,11 +125,18 @@ MySrvC::MySrvC(char *add, uint16_t p, unsigned int _weight, enum MySerStatus _st
ConnectionsFree=new MySrvConnList(this);
}
void MySrvC::connect_error() {
void MySrvC::connect_error(int err_num) {
// NOTE: this function operates without any mutex
// although, it is not extremely important if any counter is lost
// as a single connection failure won't make a significant difference
__sync_fetch_and_add(&connect_ERR,1);
switch (err_num) {
case 1045: // access denied
return;
break;
default:
break;
}
time_t t=time(NULL);
if (t!=time_last_detected_error) {
time_last_detected_error=t;

@ -435,11 +435,11 @@ handler_again:
__sync_fetch_and_add(&parent->connect_OK,1);
break;
case ASYNC_CONNECT_FAILED:
parent->connect_error();
parent->connect_error(mysql_errno(mysql));
break;
case ASYNC_CONNECT_TIMEOUT:
proxy_error("Connect timeout on %s:%d : %llu - %llu = %llu\n", parent->address, parent->port, myds->sess->thread->curtime , myds->wait_until, myds->sess->thread->curtime - myds->wait_until);
parent->connect_error();
parent->connect_error(mysql_errno(mysql));
break;
case ASYNC_CHANGE_USER_START:
change_user_start();

Loading…
Cancel
Save