When printing services also print the related backends

MXS-1060. In MaxAdmin, running "list services" will now list the
backends of each service. When running "show services", the backend
names are now printed (previously just the addresses and protocols).
This commit is contained in:
Esa Korhonen
2016-12-13 16:29:56 +02:00
parent 7047cdf6c6
commit 4bd5486924

View File

@ -1438,8 +1438,9 @@ void dprintService(DCB *dcb, SERVICE *service)
{
if (SERVER_REF_IS_ACTIVE(server))
{
dcb_printf(dcb, "\t\t%s:%d Protocol: %s\n", server->server->name,
server->server->port, server->server->protocol);
dcb_printf(dcb, "\t\t%s:%d Protocol: %s Name: %s\n",
server->server->name, server->server->port,
server->server->protocol, server->server->unique_name);
}
server = server->next;
}
@ -1471,28 +1472,49 @@ void
dListServices(DCB *dcb)
{
SERVICE *service;
const char HORIZ_SEPARATOR[] = "--------------------------+-------------------"
"+--------+----------------+-------------------\n";
spinlock_acquire(&service_spin);
service = allServices;
if (service)
{
dcb_printf(dcb, "Services.\n");
dcb_printf(dcb, "--------------------------+----------------------+--------+---------------\n");
dcb_printf(dcb, "%-25s | %-20s | #Users | Total Sessions\n",
dcb_printf(dcb, HORIZ_SEPARATOR);
dcb_printf(dcb, "%-25s | %-17s | #Users | Total Sessions | Backend databases\n",
"Service Name", "Router Module");
dcb_printf(dcb, "--------------------------+----------------------+--------+---------------\n");
dcb_printf(dcb, HORIZ_SEPARATOR);
}
while (service)
{
ss_dassert(service->stats.n_current >= 0);
dcb_printf(dcb, "%-25s | %-20s | %6d | %5d\n",
dcb_printf(dcb, "%-25s | %-17s | %6d | %14d | ",
service->name, service->routerModule,
service->stats.n_current, service->stats.n_sessions);
SERVER_REF* server_ref = service->dbref;
bool first = true;
while (server_ref)
{
if (SERVER_REF_IS_ACTIVE(server_ref))
{
if (first)
{
dcb_printf(dcb, "%s", server_ref->server->unique_name);
}
else
{
dcb_printf(dcb, ", %s ", server_ref->server->unique_name);
}
first = false;
}
server_ref = server_ref->next;
}
dcb_printf(dcb, "\n");
service = service->next;
}
if (allServices)
{
dcb_printf(dcb, "--------------------------+----------------------+--------+---------------\n\n");
dcb_printf(dcb, "%s\n", HORIZ_SEPARATOR);
}
spinlock_release(&service_spin);
}