MXS-2220 Read server version using public methods

Version related fields have been removed from the public class.
This commit is contained in:
Esa Korhonen
2018-12-18 16:39:39 +02:00
parent d1b098d3b0
commit 09aa54720d
15 changed files with 100 additions and 167 deletions

View File

@ -127,11 +127,10 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
{
MYSQL_ROW row;
MYSQL_RES* result;
char* server_string;
/* get server version string */
mxs_mysql_update_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
mxs_mysql_update_server_version(monitored_server->server, monitored_server->con);
auto server_string = monitored_server->server->version_string();
/* Check if the the Galera FSM shows this node is joined to the cluster */
const char* cluster_member =
@ -150,7 +149,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
MXS_ERROR("Unexpected result for \"%s\". "
"Expected 2 columns. MySQL Version: %s",
cluster_member,
server_string);
server_string.c_str());
return;
}
GaleraNode info = {};
@ -193,7 +192,7 @@ void GaleraMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
}
/* Check if the node is a donor and is using xtrabackup, in this case it can stay alive */
else if (strcmp(row[1], "2") == 0 && m_availableWhenDonor == 1
&& using_xtrabackup(monitored_server, server_string))
&& using_xtrabackup(monitored_server, server_string.c_str()))
{
info.joined = 1;
}

View File

@ -1494,7 +1494,8 @@ void MariaDBMonitor::check_cluster_operations_support()
supported = false;
auto reason = string_printf("The version of '%s' (%s) is not supported. Failover/switchover "
"requires MariaDB 10.0.2 or later.",
server->name(), server->m_server_base->server->version_string);
server->name(),
server->m_server_base->server->version_string().c_str());
printer.cat(all_reasons, reason);
}

View File

@ -887,20 +887,18 @@ bool MariaDBServer::update_slave_status(string* errmsg_out)
void MariaDBServer::update_server_version()
{
m_srv_type = server_type::UNKNOWN;
auto conn = m_server_base->con;
auto srv = m_server_base->server;
mxs_mysql_update_server_version(srv, conn);
/* Get server version string, also get/set numeric representation. This function does not query the
* server, since the data was obtained when connecting. */
mxs_mysql_update_server_version(conn, srv);
// Check whether this server is a MaxScale Binlog Server.
m_srv_type = server_type::UNKNOWN; // TODO: Use type information in SERVER directly
auto server_type = srv->type();
MYSQL_RES* result;
if (strcasestr(srv->version_string, "clustrix") != nullptr)
if (server_type == SERVER::Type::CLUSTRIX)
{
m_srv_type = server_type::CLUSTRIX;
}
// Check whether this server is a MaxScale Binlog Server.
else if (mxs_mysql_query(conn, "SELECT @@maxscale_version") == 0
&& (result = mysql_store_result(conn)) != NULL)
{
@ -912,7 +910,7 @@ void MariaDBServer::update_server_version()
/* Not a binlog server, check version number and supported features. */
m_srv_type = server_type::NORMAL;
m_capabilities = Capabilities();
SERVER::Version info = srv->get_version();
SERVER::Version info = srv->version();
auto major = info.major;
auto minor = info.minor;
auto patch = info.patch;
@ -921,7 +919,7 @@ void MariaDBServer::update_server_version()
{
m_capabilities.basic_support = true;
// For more specific features, at least MariaDB 10.X is needed.
if (srv->server_type == SERVER_TYPE_MARIADB && major >= 10)
if (server_type == SERVER::Type::MARIADB && major >= 10)
{
// 10.0.2 or 10.1.X or greater than 10
if (((minor == 0 && patch >= 2) || minor >= 1) || major > 10)
@ -938,7 +936,7 @@ void MariaDBServer::update_server_version()
else
{
MXS_ERROR("MariaDB/MySQL version of '%s' (%s) is less than 5.5, which is not supported. "
"The server is ignored by the monitor.", name(), srv->version_string);
"The server is ignored by the monitor.", name(), srv->version_string().c_str());
}
}
}

View File

@ -81,15 +81,13 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
int isslave = 0;
int ismaster = 0;
unsigned long int server_version = 0;
char* server_string;
/* get server version from current server */
server_version = mysql_get_server_version(monitored_server->con);
/* get server version string */
mxs_mysql_update_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
mxs_mysql_update_server_version(monitored_server->server, monitored_server->con);
auto server_string = monitored_server->server->version_string();
/* get server_id form current node */
if (mxs_mysql_query(monitored_server->con, "SELECT @@server_id") == 0
@ -102,7 +100,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
mysql_free_result(result);
MXS_ERROR("Unexpected result for 'SELECT @@server_id'. Expected 1 column."
" MySQL Version: %s",
server_string);
server_string.c_str());
return;
}
@ -141,7 +139,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
mysql_free_result(result);
MXS_ERROR("\"SHOW ALL SLAVES STATUS\" returned less than the expected"
" amount of columns. Expected 42 columns MySQL Version: %s",
server_string);
server_string.c_str());
return;
}
@ -211,7 +209,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
"replication tree cannot be resolved for server %s."
" MySQL Version: %s",
monitored_server->server->name,
server_string);
server_string.c_str());
monitored_server->log_version_err = false;
}
}
@ -220,7 +218,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
MXS_ERROR("\"SHOW SLAVE STATUS\" "
"returned less than the expected amount of columns. "
"Expected 40 columns. MySQL Version: %s",
server_string);
server_string.c_str());
}
return;
}
@ -269,7 +267,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
mysql_free_result(result);
MXS_ERROR("Unexpected result for \"SHOW GLOBAL VARIABLES LIKE 'read_only'\". "
"Expected 2 columns. MySQL Version: %s",
server_string);
server_string.c_str());
return;
}

View File

@ -47,11 +47,9 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
MYSQL_ROW row;
MYSQL_RES* result;
int isjoined = 0;
char* server_string;
/* get server version string */
mxs_mysql_update_server_version(monitored_server->con, monitored_server->server);
server_string = monitored_server->server->version_string;
mxs_mysql_update_server_version(monitored_server->server, monitored_server->con);
/* Check if the the SQL node is able to contact one or more data nodes */
if (mxs_mysql_query(monitored_server->con, "SHOW STATUS LIKE 'Ndb_number_of_ready_data_nodes'") == 0
@ -63,7 +61,7 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE "
"'Ndb_number_of_ready_data_nodes'\". Expected 2 columns."
" MySQL Version: %s",
server_string);
monitored_server->server->version_string().c_str());
return;
}
@ -91,7 +89,7 @@ void NDBCMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
MXS_ERROR("Unexpected result for \"SHOW STATUS LIKE 'Ndb_cluster_node_id'\". "
"Expected 2 columns."
" MySQL Version: %s",
server_string);
monitored_server->server->version_string().c_str());
return;
}