SlaveStatus::to_short_string() uses member field

The owner server name is now stored in a field.
This commit is contained in:
Esa Korhonen
2018-10-09 18:32:31 +03:00
parent 2f1512a22d
commit d0444ff054
4 changed files with 32 additions and 27 deletions

View File

@ -877,8 +877,7 @@ void MariaDBMonitor::wait_cluster_stabilization(ClusterOperation& op, const Serv
{
// IO error on slave
MXS_WARNING("%s cannot start replication because of IO thread error: '%s'.",
slave_conn->to_short_string(slave->name()).c_str(),
slave_conn->last_error.c_str());
slave_conn->to_short_string().c_str(), slave_conn->last_error.c_str());
repl_fails.push_back(*iter);
iter = unconfirmed.erase(iter);
}
@ -886,8 +885,7 @@ void MariaDBMonitor::wait_cluster_stabilization(ClusterOperation& op, const Serv
{
// SQL error on slave
MXS_WARNING("%s cannot start replication because of SQL thread error: '%s'.",
slave_conn->to_short_string(slave->name()).c_str(),
slave_conn->last_error.c_str());
slave_conn->to_short_string().c_str(), slave_conn->last_error.c_str());
repl_fails.push_back(*iter);
iter = unconfirmed.erase(iter);
}
@ -1394,7 +1392,7 @@ void MariaDBMonitor::check_cluster_operations_support()
{
supported = false;
auto reason = string_printf("%s is not using gtid-replication.",
slave_conn.to_short_string(server->name()).c_str());
slave_conn.to_short_string().c_str());
printer.cat(all_reasons, reason);
}
}

View File

@ -291,6 +291,7 @@ bool MariaDBServer::do_show_slave_status(string* errmsg_out)
while (result->next_row())
{
SlaveStatus new_row;
new_row.owning_server = name();
new_row.master_host = result->get_string(i_master_host);
new_row.master_port = result->get_uint(i_master_port);
string last_io_error = result->get_string(i_last_io_error);
@ -1916,8 +1917,7 @@ bool MariaDBServer::merge_slave_conns(ClusterOperation& op, const SlaveStatusArr
if (conn_can_be_merged(slave_conn, &ignore_reason))
{
MXS_WARNING("%s was ignored when promoting %s because %s",
slave_conn.to_short_string(op.demotion_target->name()).c_str(), name(),
ignore_reason.c_str());
slave_conn.to_short_string().c_str(), name(), ignore_reason.c_str());
}
else
{
@ -1968,9 +1968,7 @@ bool MariaDBServer::copy_slave_conns(ClusterOperation& op, const SlaveStatusArra
else
{
MXS_WARNING("%s was not copied to %s because %s",
slave_conn.to_short_string(replacement->name()).c_str(),
name(),
reason_not_copied.c_str());
slave_conn.to_short_string().c_str(), name(), reason_not_copied.c_str());
}
}
return !start_slave_error;
@ -1988,30 +1986,32 @@ bool MariaDBServer::create_start_slave(ClusterOperation& op, const SlaveStatus&
StopWatch timer;
string error_msg;
bool success = false;
string change_master = generate_change_master_cmd(op, slave_conn);
SlaveStatus new_conn = slave_conn;
new_conn.owning_server = name();
string change_master = generate_change_master_cmd(op, new_conn);
bool conn_created = execute_cmd_time_limit(change_master, op.time_remaining, &error_msg);
op.time_remaining -= timer.restart();
if (conn_created)
{
string start_slave = string_printf("START SLAVE '%s';", slave_conn.name.c_str());
string start_slave = string_printf("START SLAVE '%s';", new_conn.name.c_str());
bool slave_started = execute_cmd_time_limit(start_slave, op.time_remaining, &error_msg);
op.time_remaining -= timer.restart();
if (slave_started)
{
success = true;
MXS_NOTICE("%s created and started.", slave_conn.to_short_string(name()).c_str());
MXS_NOTICE("%s created and started.", new_conn.to_short_string().c_str());
}
else
{
MXS_ERROR("%s could not be started: %s",
slave_conn.to_short_string(name()).c_str(), error_msg.c_str());
new_conn.to_short_string().c_str(), error_msg.c_str());
}
}
else
{
// TODO: This may currently print out passwords.
MXS_ERROR("%s could not be created: %s",
slave_conn.to_short_string(name()).c_str(), error_msg.c_str());
new_conn.to_short_string().c_str(), error_msg.c_str());
}
return success;
}
@ -2076,8 +2076,7 @@ bool MariaDBServer::redirect_existing_slave_conn(ClusterOperation& op)
{
PRINT_MXS_JSON_ERROR(op.error_out,
"%s could not be started: %s",
modified_conn.to_short_string(name()).c_str(),
error_msg.c_str());
modified_conn.to_short_string().c_str(), error_msg.c_str());
}
}
else
@ -2085,7 +2084,7 @@ bool MariaDBServer::redirect_existing_slave_conn(ClusterOperation& op)
// TODO: This may currently print out passwords.
PRINT_MXS_JSON_ERROR(op.error_out,
"%s could not be redirected to [%s]:%i: %s",
old_conn->to_short_string(name()).c_str(),
old_conn->to_short_string().c_str(),
modified_conn.master_host.c_str(), modified_conn.master_port,
error_msg.c_str());
}

View File

@ -49,17 +49,17 @@ string SlaveStatus::to_string() const
return rval;
}
string SlaveStatus::to_short_string(const string& owner) const
string SlaveStatus::to_short_string() const
{
if (name.empty())
{
return string_printf("Slave connection from %s to [%s]:%i",
owner.c_str(), master_host.c_str(), master_port);
owning_server.c_str(), master_host.c_str(), master_port);
}
else
{
return string_printf("Slave connection '%s' from %s to [%s]:%i",
name.c_str(), owner.c_str(), master_host.c_str(), master_port);
name.c_str(), owning_server.c_str(), master_host.c_str(), master_port);
}
}

View File

@ -170,9 +170,10 @@ public:
SLAVE_IO_NO,
};
std::string owning_server; /* Server name of the owner */
bool seen_connected = false; /* Has this slave connection been seen connected,
* meaning that the master server id is correct?
**/
* meaning that the master server id
* is correct? */
std::string name; /* Slave connection name. Must be unique for
* the server.*/
int64_t master_server_id = SERVER_ID_UNKNOWN; /* The master's server_id value. Valid ids are
@ -195,7 +196,14 @@ public:
std::string to_string() const;
json_t* to_json() const;
std::string to_short_string(const std::string& owner) const;
/**
* Create a short description in the form of "Slave connection from <slave> to <master>"
*
* @return Description
*/
std::string to_short_string() const;
static slave_io_running_t slave_io_from_string(const std::string& str);
static std::string slave_io_to_string(slave_io_running_t slave_io);
bool should_be_copied(std::string* ignore_reason_out) const;