From 4bd548692422e6c73ee093dccc02b5f05208afad Mon Sep 17 00:00:00 2001 From: Esa Korhonen Date: Tue, 13 Dec 2016 16:29:56 +0200 Subject: [PATCH] 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). --- server/core/service.c | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/server/core/service.c b/server/core/service.c index c42c53db0..9ad99e101 100644 --- a/server/core/service.c +++ b/server/core/service.c @@ -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); }