First attempt to have ping timeout (issue #535)

Added state ASYNC_PING_TIMEOUT that happens when sess->thread->curtime >= wait_until
pull/642/head
René Cannaò 10 years ago
parent bf0a214e4f
commit 99bb540e1d

@ -28,6 +28,7 @@ enum MDB_ASYNC_ST { // MariaDB Async State Machine
ASYNC_PING_END,
ASYNC_PING_SUCCESSFUL,
ASYNC_PING_FAILED,
ASYNC_PING_TIMEOUT,
ASYNC_SET_AUTOCOMMIT_START,
ASYNC_SET_AUTOCOMMIT_CONT,
ASYNC_SET_AUTOCOMMIT_END,

@ -507,9 +507,15 @@ handler_again:
break;
case ASYNC_PING_CONT:
assert(myds->sess->status==PINGING_SERVER);
ping_cont(event);
if (event) {
ping_cont(event);
}
if (async_exit_status) {
next_event(ASYNC_PING_CONT);
if (myds->sess->thread->curtime >= myds->wait_until) {
next_event(ASYNC_PING_CONT);
} else {
NEXT_IMMEDIATE(ASYNC_PING_TIMEOUT);
}
} else {
NEXT_IMMEDIATE(ASYNC_PING_END);
}
@ -525,6 +531,8 @@ handler_again:
break;
case ASYNC_PING_FAILED:
break;
case ASYNC_PING_TIMEOUT:
break;
case ASYNC_QUERY_START:
real_query_start();
__sync_fetch_and_add(&parent->queries_sent,1);
@ -828,6 +836,7 @@ int MySQL_Connection::async_ping(short event) {
return 0;
break;
case ASYNC_PING_FAILED:
case ASYNC_PING_TIMEOUT:
return -1;
break;
case ASYNC_IDLE:
@ -844,6 +853,7 @@ int MySQL_Connection::async_ping(short event) {
return 0;
break;
case ASYNC_PING_FAILED:
case ASYNC_PING_TIMEOUT:
return -1;
break;
default:

Loading…
Cancel
Save