From a78dbfb6b30aea924f210bf38612ec27bf62423b Mon Sep 17 00:00:00 2001 From: val Date: Tue, 25 Feb 2020 19:47:43 +0000 Subject: [PATCH] report mysql thread_id in case of error during query --- include/mysql_connection.h | 1 + lib/MySQL_Session.cpp | 9 ++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/mysql_connection.h b/include/mysql_connection.h index 1f10ded7e..140e533b0 100644 --- a/include/mysql_connection.h +++ b/include/mysql_connection.h @@ -247,5 +247,6 @@ class MySQL_Connection { void reduce_auto_increment_delay_token() { if (auto_increment_delay_token) auto_increment_delay_token--; }; bool match_tracked_options(MySQL_Connection *c); + unsigned long get_mysql_thread_id() { return mysql ? mysql->thread_id : 0; } }; #endif /* __CLASS_MYSQL_CONNECTION_H */ diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index e620fe07c..d7056a8aa 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -4283,7 +4283,7 @@ handler_again: if (myerr >= 2000 && myerr < 3000) { bool retry_conn=false; // client error, serious - proxy_error("Detected a broken connection during query on (%d,%s,%d) , FD (Conn:%d , MyDS:%d) : %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myds->fd, myds->myconn->fd, myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql))); + proxy_error("Detected a broken connection during query on (%d,%s,%d,%lu) , FD (Conn:%d , MyDS:%d) : %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myconn->get_mysql_thread_id(), myds->fd, myds->myconn->fd, myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql))); if (myds->query_retries_on_failure > 0) { myds->query_retries_on_failure--; if ((myds->myconn->reusable==true) && myds->myconn->IsActiveTransaction()==false && myds->myconn->MultiplexDisabled()==false) { @@ -4328,9 +4328,9 @@ handler_again: return handler_ret; } else { if (mysql_thread___verbose_query_error) { - proxy_warning("Error during query on (%d,%s,%d) , user \"%s@%s\" , schema \"%s\" , %d, %s . digest_text = \"%s\"\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, client_myds->myconn->userinfo->username, (client_myds->addr.addr ? client_myds->addr.addr : (char *)"unknown" ), client_myds->myconn->userinfo->schemaname, myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql)), CurrentQuery.QueryParserArgs.digest_text ); + proxy_warning("Error during query on (%d,%s,%d,%lu) , user \"%s@%s\" , schema \"%s\" , %d, %s . digest_text = \"%s\"\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myconn->get_mysql_thread_id(), client_myds->myconn->userinfo->username, (client_myds->addr.addr ? client_myds->addr.addr : (char *)"unknown" ), client_myds->myconn->userinfo->schemaname, myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql)), CurrentQuery.QueryParserArgs.digest_text ); } else { - proxy_warning("Error during query on (%d,%s,%d): %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql))); + proxy_warning("Error during query on (%d,%s,%d,%lu): %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myconn->get_mysql_thread_id(), myerr, ( errmsg ? errmsg : mysql_error(myconn->mysql))); } MyHGM->add_mysql_errors(myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, client_myds->myconn->userinfo->username, (client_myds->addr.addr ? client_myds->addr.addr : (char *)"unknown" ), client_myds->myconn->userinfo->schemaname, myerr, (char *)( errmsg ? errmsg : mysql_error(myconn->mysql))); bool retry_conn=false; @@ -4394,7 +4394,7 @@ handler_again: //return handler_ret; break; case 1153: // ER_NET_PACKET_TOO_LARGE - proxy_warning("Error ER_NET_PACKET_TOO_LARGE during query on (%d,%s,%d): %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myerr, mysql_error(myconn->mysql)); + proxy_warning("Error ER_NET_PACKET_TOO_LARGE during query on (%d,%s,%d,%lu): %d, %s\n", myconn->parent->myhgc->hid, myconn->parent->address, myconn->parent->port, myconn->get_mysql_thread_id(), myerr, mysql_error(myconn->mysql)); break; default: break; // continue normally @@ -5428,7 +5428,6 @@ bool MySQL_Session::handler___status_WAITING_CLIENT_DATA___STATE_SLEEP___MYSQL_C This algorithm will be become obsolete once we implement session tracking for MySQL 5.7+ */ - bool ret = false; bool exit_after_SetParse = false; unsigned char command_type=*((unsigned char *)pkt->ptr+sizeof(mysql_hdr)); if (qpo->new_query) {