diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index 2a3141bac..12b614cf1 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -658,7 +658,7 @@ handler_again: mybe->server_myds->max_connect_time=0; } if ( - (mybe->server_myds->myconn && mybe->server_myds->wait_until && thread->curtime >= mybe->server_myds->wait_until) + (mybe->server_myds->myconn && mybe->server_myds->myconn!=ASYNC_IDLE && mybe->server_myds->wait_until && thread->curtime >= mybe->server_myds->wait_until) // query timed out || (killed==true) // session was killed by admin @@ -817,6 +817,10 @@ handler_again: bool retry_conn=false; switch (myerr) { + case 1317: // Query execution was interrupted + if (killed==true || myds->killed_at) { + return -1; + } case 1290: // read-only if ((myds->myconn->reusable==true) && myds->myconn->IsActiveTransaction()==false && myds->myconn->MultiplexDisabled()==false) { retry_conn=true; @@ -1105,6 +1109,7 @@ handler_again: status=WAITING_CLIENT_DATA; st=previous_status.top(); previous_status.pop(); + myds->wait_until=0; NEXT_IMMEDIATE(st); break; case -1: