Merge pull request #1900 from insom/status_flags

Add backend connection status flags to stats_mysql_processlist
pull/1945/head
René Cannaò 7 years ago committed by GitHub
commit 537c667a7d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4396,7 +4396,7 @@ void MySQL_Threads_Handler::Get_Memory_Stats() {
}
SQLite3_result * MySQL_Threads_Handler::SQL3_Processlist() {
const int colnum=14;
const int colnum=15;
char port[NI_MAXSERV];
proxy_debug(PROXY_DEBUG_MYSQL_CONNECTION, 4, "Dumping MySQL Processlist\n");
SQLite3_result *result=new SQLite3_result(colnum);
@ -4414,6 +4414,7 @@ SQLite3_result * MySQL_Threads_Handler::SQL3_Processlist() {
result->add_column_definition(SQLITE_TEXT,"command");
result->add_column_definition(SQLITE_TEXT,"time_ms");
result->add_column_definition(SQLITE_TEXT,"info");
result->add_column_definition(SQLITE_TEXT,"status_flags");
unsigned int i;
unsigned int i2;
// signal_all_threads(1);
@ -4549,12 +4550,15 @@ SQLite3_result * MySQL_Threads_Handler::SQL3_Processlist() {
pta[13]=NULL;
}
}
sprintf(buf,"%d", mc->status_flags);
pta[14]=strdup(buf);
} else {
pta[7]=NULL;
pta[8]=NULL;
pta[9]=NULL;
pta[10]=NULL;
pta[13]=NULL;
pta[14]=NULL;
}
switch (sess->status) {
case CONNECTING_SERVER:

@ -303,7 +303,7 @@ static int http_handler(void *cls, struct MHD_Connection *connection, const char
#define STATS_SQLITE_TABLE_MYSQL_QUERY_RULES "CREATE TABLE stats_mysql_query_rules (rule_id INTEGER PRIMARY KEY , hits INT NOT NULL)"
#define STATS_SQLITE_TABLE_MYSQL_USERS "CREATE TABLE stats_mysql_users (username VARCHAR PRIMARY KEY , frontend_connections INT NOT NULL , frontend_max_connections INT NOT NULL)"
#define STATS_SQLITE_TABLE_MYSQL_COMMANDS_COUNTERS "CREATE TABLE stats_mysql_commands_counters (Command VARCHAR NOT NULL PRIMARY KEY , Total_Time_us INT NOT NULL , Total_cnt INT NOT NULL , cnt_100us INT NOT NULL , cnt_500us INT NOT NULL , cnt_1ms INT NOT NULL , cnt_5ms INT NOT NULL , cnt_10ms INT NOT NULL , cnt_50ms INT NOT NULL , cnt_100ms INT NOT NULL , cnt_500ms INT NOT NULL , cnt_1s INT NOT NULL , cnt_5s INT NOT NULL , cnt_10s INT NOT NULL , cnt_INFs)"
#define STATS_SQLITE_TABLE_MYSQL_PROCESSLIST "CREATE TABLE stats_mysql_processlist (ThreadID INT NOT NULL , SessionID INTEGER PRIMARY KEY , user VARCHAR , db VARCHAR , cli_host VARCHAR , cli_port INT , hostgroup INT , l_srv_host VARCHAR , l_srv_port INT , srv_host VARCHAR , srv_port INT , command VARCHAR , time_ms INT NOT NULL , info VARCHAR)"
#define STATS_SQLITE_TABLE_MYSQL_PROCESSLIST "CREATE TABLE stats_mysql_processlist (ThreadID INT NOT NULL , SessionID INTEGER PRIMARY KEY , user VARCHAR , db VARCHAR , cli_host VARCHAR , cli_port INT , hostgroup INT , l_srv_host VARCHAR , l_srv_port INT , srv_host VARCHAR , srv_port INT , command VARCHAR , time_ms INT NOT NULL , info VARCHAR, status_flags INT)"
#define STATS_SQLITE_TABLE_MYSQL_CONNECTION_POOL "CREATE TABLE stats_mysql_connection_pool (hostgroup INT , srv_host VARCHAR , srv_port INT , status VARCHAR , ConnUsed INT , ConnFree INT , ConnOK INT , ConnERR INT , MaxConnUsed INT , Queries INT , Queries_GTID_sync INT , Bytes_data_sent INT , Bytes_data_recv INT , Latency_us INT)"
#define STATS_SQLITE_TABLE_MYSQL_CONNECTION_POOL_RESET "CREATE TABLE stats_mysql_connection_pool_reset (hostgroup INT , srv_host VARCHAR , srv_port INT , status VARCHAR , ConnUsed INT , ConnFree INT , ConnOK INT , ConnERR INT , MaxConnUsed INT , Queries INT , Queries_GTID_sync INT , Bytes_data_sent INT , Bytes_data_recv INT , Latency_us INT)"
@ -5713,12 +5713,13 @@ void ProxySQL_Admin::stats___mysql_processlist() {
if (resultset==NULL) return;
statsdb->execute("BEGIN");
statsdb->execute("DELETE FROM stats_mysql_processlist");
char *a=(char *)"INSERT OR IGNORE INTO stats_mysql_processlist VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')";
char *a=(char *)"INSERT OR IGNORE INTO stats_mysql_processlist VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')";
for (std::vector<SQLite3_row *>::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) {
SQLite3_row *r=*it;
int arg_len=0;
char *o_info=NULL;
for (int i=0; i<13; i++) { // info (field 13) is left out! See #746
for (int i=0; i<15; i++) { // info (field 13) is left out! See #746
if(i == 13) continue;
if (r->fields[i])
arg_len+=strlen(r->fields[i]);
}
@ -5742,7 +5743,8 @@ void ProxySQL_Admin::stats___mysql_processlist() {
(r->fields[10] ? r->fields[10] : ""),
(r->fields[11] ? r->fields[11] : ""),
(r->fields[12] ? r->fields[12] : ""),
(r->fields[13] ? o_info : "")
(r->fields[13] ? o_info : ""),
(r->fields[14] ? r->fields[14] : "")
);
statsdb->execute(query);
free(query);

Loading…
Cancel
Save