Only print servers that aren't destroyed
If a server were to be destroyed, it should not show up among non-destroyed servers. Even though the servers aren't actually destroyed, it hides unnecessary information from the user.
This commit is contained in:
@ -115,6 +115,7 @@ typedef struct server
|
|||||||
long persistpoolmax; /**< Maximum size of persistent connections pool */
|
long persistpoolmax; /**< Maximum size of persistent connections pool */
|
||||||
long persistmaxtime; /**< Maximum number of seconds connection can live */
|
long persistmaxtime; /**< Maximum number of seconds connection can live */
|
||||||
int persistmax; /**< Maximum pool size actually achieved since startup */
|
int persistmax; /**< Maximum pool size actually achieved since startup */
|
||||||
|
bool is_active; /**< Server is active and has not been "destroyed" */
|
||||||
#if defined(SS_DEBUG)
|
#if defined(SS_DEBUG)
|
||||||
skygw_chk_t server_chk_tail;
|
skygw_chk_t server_chk_tail;
|
||||||
#endif
|
#endif
|
||||||
|
@ -133,6 +133,7 @@ server_alloc(char *servname, char *protocol, unsigned short port, char *authenti
|
|||||||
server->persistpoolmax = 0;
|
server->persistpoolmax = 0;
|
||||||
server->monuser[0] = '\0';
|
server->monuser[0] = '\0';
|
||||||
server->monpw[0] = '\0';
|
server->monpw[0] = '\0';
|
||||||
|
server->is_active = true;
|
||||||
spinlock_init(&server->persistlock);
|
spinlock_init(&server->persistlock);
|
||||||
|
|
||||||
spinlock_acquire(&server_spin);
|
spinlock_acquire(&server_spin);
|
||||||
@ -283,7 +284,7 @@ server_find_by_unique_name(char *name)
|
|||||||
server = allServers;
|
server = allServers;
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
if (server->unique_name && strcmp(server->unique_name, name) == 0)
|
if (server->is_active && server->unique_name && strcmp(server->unique_name, name) == 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -309,7 +310,7 @@ server_find(char *servname, unsigned short port)
|
|||||||
server = allServers;
|
server = allServers;
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
if (strcmp(server->name, servname) == 0 && server->port == port)
|
if (server->is_active && strcmp(server->name, servname) == 0 && server->port == port)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -352,7 +353,10 @@ printAllServers()
|
|||||||
server = allServers;
|
server = allServers;
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
printServer(server);
|
if (server->is_active)
|
||||||
|
{
|
||||||
|
printServer(server);
|
||||||
|
}
|
||||||
server = server->next;
|
server = server->next;
|
||||||
}
|
}
|
||||||
spinlock_release(&server_spin);
|
spinlock_release(&server_spin);
|
||||||
@ -373,7 +377,10 @@ dprintAllServers(DCB *dcb)
|
|||||||
server = allServers;
|
server = allServers;
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
dprintServer(dcb, server);
|
if (server->is_active)
|
||||||
|
{
|
||||||
|
dprintServer(dcb, server);
|
||||||
|
}
|
||||||
server = server->next;
|
server = server->next;
|
||||||
}
|
}
|
||||||
spinlock_release(&server_spin);
|
spinlock_release(&server_spin);
|
||||||
@ -404,6 +411,11 @@ dprintAllServersJson(DCB *dcb)
|
|||||||
dcb_printf(dcb, "[\n");
|
dcb_printf(dcb, "[\n");
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
|
if (!server->is_active)
|
||||||
|
{
|
||||||
|
server = server->next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
dcb_printf(dcb, " {\n \"server\": \"%s\",\n",
|
dcb_printf(dcb, " {\n \"server\": \"%s\",\n",
|
||||||
server->name);
|
server->name);
|
||||||
stat = server_status(server);
|
stat = server_status(server);
|
||||||
@ -484,6 +496,11 @@ dprintAllServersJson(DCB *dcb)
|
|||||||
void
|
void
|
||||||
dprintServer(DCB *dcb, SERVER *server)
|
dprintServer(DCB *dcb, SERVER *server)
|
||||||
{
|
{
|
||||||
|
if (!server->is_active)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dcb_printf(dcb, "Server %p (%s)\n", server, server->unique_name);
|
dcb_printf(dcb, "Server %p (%s)\n", server, server->unique_name);
|
||||||
dcb_printf(dcb, "\tServer: %s\n", server->name);
|
dcb_printf(dcb, "\tServer: %s\n", server->name);
|
||||||
char* stat = server_status(server);
|
char* stat = server_status(server);
|
||||||
@ -618,25 +635,38 @@ dListServers(DCB *dcb)
|
|||||||
|
|
||||||
spinlock_acquire(&server_spin);
|
spinlock_acquire(&server_spin);
|
||||||
server = allServers;
|
server = allServers;
|
||||||
|
|
||||||
|
while (server && !server->is_active)
|
||||||
|
{
|
||||||
|
server = server->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool have_servers = false;
|
||||||
|
|
||||||
if (server)
|
if (server)
|
||||||
{
|
{
|
||||||
|
have_servers = true;
|
||||||
dcb_printf(dcb, "Servers.\n");
|
dcb_printf(dcb, "Servers.\n");
|
||||||
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
||||||
dcb_printf(dcb, "%-18s | %-15s | Port | Connections | %-20s\n",
|
dcb_printf(dcb, "%-18s | %-15s | Port | Connections | %-20s\n",
|
||||||
"Server", "Address", "Status");
|
"Server", "Address", "Status");
|
||||||
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
while (server)
|
while (server)
|
||||||
{
|
{
|
||||||
stat = server_status(server);
|
if (server->is_active)
|
||||||
dcb_printf(dcb, "%-18s | %-15s | %5d | %11d | %s\n",
|
{
|
||||||
server->unique_name, server->name,
|
stat = server_status(server);
|
||||||
server->port,
|
dcb_printf(dcb, "%-18s | %-15s | %5d | %11d | %s\n",
|
||||||
server->stats.n_current, stat);
|
server->unique_name, server->name,
|
||||||
MXS_FREE(stat);
|
server->port,
|
||||||
|
server->stats.n_current, stat);
|
||||||
|
MXS_FREE(stat);
|
||||||
|
}
|
||||||
server = server->next;
|
server = server->next;
|
||||||
}
|
}
|
||||||
if (allServers)
|
if (have_servers)
|
||||||
{
|
{
|
||||||
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
dcb_printf(dcb, "-------------------+-----------------+-------+-------------+--------------------\n");
|
||||||
}
|
}
|
||||||
@ -918,16 +948,19 @@ serverRowCallback(RESULTSET *set, void *data)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
(*rowno)++;
|
(*rowno)++;
|
||||||
row = resultset_make_row(set);
|
if (server->is_active)
|
||||||
resultset_row_set(row, 0, server->unique_name);
|
{
|
||||||
resultset_row_set(row, 1, server->name);
|
row = resultset_make_row(set);
|
||||||
sprintf(buf, "%d", server->port);
|
resultset_row_set(row, 0, server->unique_name);
|
||||||
resultset_row_set(row, 2, buf);
|
resultset_row_set(row, 1, server->name);
|
||||||
sprintf(buf, "%d", server->stats.n_current);
|
sprintf(buf, "%d", server->port);
|
||||||
resultset_row_set(row, 3, buf);
|
resultset_row_set(row, 2, buf);
|
||||||
stat = server_status(server);
|
sprintf(buf, "%d", server->stats.n_current);
|
||||||
resultset_row_set(row, 4, stat);
|
resultset_row_set(row, 3, buf);
|
||||||
MXS_FREE(stat);
|
stat = server_status(server);
|
||||||
|
resultset_row_set(row, 4, stat);
|
||||||
|
MXS_FREE(stat);
|
||||||
|
}
|
||||||
spinlock_release(&server_spin);
|
spinlock_release(&server_spin);
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user