diff --git a/server/core/server.c b/server/core/server.c index 631bb2010..0fe018d7a 100644 --- a/server/core/server.c +++ b/server/core/server.c @@ -375,23 +375,23 @@ char *stat; if (ptr) { dcb_printf(dcb, "Servers.\n"); - dcb_printf(dcb, "-------------------+-----------------+-------+----------------------+------------\n"); - dcb_printf(dcb, "%-18s | %-15s | Port | %-20s | Connections\n", + dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n"); + dcb_printf(dcb, "%-18s | %-15s | Port | Connections | %-20s", "Server", "Address", "Status"); - dcb_printf(dcb, "-------------------+-----------------+-------+----------------------+------------\n"); + dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n"); } while (ptr) { stat = server_status(ptr); - dcb_printf(dcb, "%-18s | %-15s | %5d | %-20s | %4d\n", + dcb_printf(dcb, "%-18s | %-15s | %5d | %11d | %s\n", ptr->unique_name, ptr->name, - ptr->port, stat, - ptr->stats.n_current); + ptr->port, + ptr->stats.n_current, stat); free(stat); ptr = ptr->next; } if (allServers) - dcb_printf(dcb, "-------------------+-----------------+-------+----------------------+------------\n\n"); + dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n"); spinlock_release(&server_spin); } @@ -424,6 +424,8 @@ char *status = NULL; strcat(status, "Slave of External Server, "); if (server->status & SERVER_STALE_STATUS) strcat(status, "Stale Status, "); + if (server->status & SERVER_AUTH_ERROR) + strcat(status, "Auth Error, "); if (server->status & SERVER_RUNNING) strcat(status, "Running"); else diff --git a/server/core/session.c b/server/core/session.c index db59f9e6e..a67926b48 100644 --- a/server/core/session.c +++ b/server/core/session.c @@ -694,6 +694,7 @@ int i; return 0; } session->tail = *tail; + free(tail); } return 1; diff --git a/server/include/server.h b/server/include/server.h index 2b75ddf61..81392243c 100644 --- a/server/include/server.h +++ b/server/include/server.h @@ -105,6 +105,7 @@ typedef struct server { #define SERVER_MAINT 0x0020 /**<< Server is in maintenance mode */ #define SERVER_SLAVE_OF_EXTERNAL_MASTER 0x0040 /**<< Server is slave of a Master outside the provided replication topology */ #define SERVER_STALE_STATUS 0x0080 /**<< Server stale status, monitor didn't update it */ +#define SERVER_AUTH_ERROR 0x1000 /**<< Authentication erorr from monitor */ /** * Is the server running - the macro returns true if the server is marked as running diff --git a/server/modules/monitor/galera_mon.c b/server/modules/monitor/galera_mon.c index 761078453..de71c4dfb 100644 --- a/server/modules/monitor/galera_mon.c +++ b/server/modules/monitor/galera_mon.c @@ -335,10 +335,18 @@ char *server_string; database->server->port, mysql_error(database->con)))); server_clear_status(database->server, SERVER_RUNNING); + if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR) + { + server_set_status(database->server, SERVER_AUTH_ERROR); + } database->server->node_id = -1; free(dpwd); return; } + else + { + server_clear_status(database->server, SERVER_AUTH_ERROR); + } free(dpwd); } diff --git a/server/modules/monitor/mysql_mon.c b/server/modules/monitor/mysql_mon.c index e78759f82..fb86fc0fc 100644 --- a/server/modules/monitor/mysql_mon.c +++ b/server/modules/monitor/mysql_mon.c @@ -400,6 +400,11 @@ char *server_string; * Store server NOT running in server and monitor server pending struct * */ + if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR) + { + server_set_status(database->server, SERVER_AUTH_ERROR); + monitor_set_pending_status(database, SERVER_AUTH_ERROR); + } server_clear_status(database->server, SERVER_RUNNING); monitor_clear_pending_status(database, SERVER_RUNNING); @@ -417,6 +422,11 @@ char *server_string; return; } + else + { + server_clear_status(database->server, SERVER_AUTH_ERROR); + monitor_clear_pending_status(database, SERVER_AUTH_ERROR); + } free(dpwd); } /* Store current status in both server and monitor server pending struct */ diff --git a/server/modules/monitor/ndbcluster_mon.c b/server/modules/monitor/ndbcluster_mon.c index c565c4002..f83ee7ae7 100644 --- a/server/modules/monitor/ndbcluster_mon.c +++ b/server/modules/monitor/ndbcluster_mon.c @@ -329,10 +329,18 @@ char *server_string; database->server->port, mysql_error(database->con)))); server_clear_status(database->server, SERVER_RUNNING); + if (mysql_errno(database->con) == ER_ACCESS_DENIED_ERROR) + { + server_set_status(database->server, SERVER_AUTH_ERROR); + } database->server->node_id = -1; free(dpwd); return; } + else + { + server_clear_status(database->server, SERVER_AUTH_ERROR); + } free(dpwd); }