[master] a49d623 Give backend.list CLI command an optional "-p" flag which outputs detailed probing information.
Poul-Henning Kamp
phk at FreeBSD.org
Mon Mar 9 23:35:10 CET 2015
commit a49d6239a33315a54beff1fad787c87e192f0691
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Mar 9 22:34:28 2015 +0000
Give backend.list CLI command an optional "-p" flag which outputs
detailed probing information.
Retire the "debug.health" CLI command.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 5dd6621..8817c3c 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -710,9 +710,6 @@ void VCA_FailSess(struct worker *w);
/* cache_backend_cfg.c */
void VBE_InitCfg(void);
-/* cache_backend_poll.c */
-void VBP_Init(void);
-
/* cache_ban.c */
struct ban *BAN_New(void);
int BAN_AddTest(struct ban *, const char *, const char *, const char *);
diff --git a/bin/varnishd/cache/cache_backend.h b/bin/varnishd/cache/cache_backend.h
index f1faa97..584a6f1 100644
--- a/bin/varnishd/cache/cache_backend.h
+++ b/bin/varnishd/cache/cache_backend.h
@@ -113,7 +113,7 @@ void VBE_DeleteBackend(struct backend *);
void VBP_Insert(struct backend *b, struct vrt_backend_probe const *p,
const char *hosthdr);
void VBP_Remove(struct backend *b);
-void VBP_Summary(struct cli *cli, const struct vbp_target *vt);
+void VBP_Status(struct cli *cli, const struct backend *, int details);
struct tcp_pool *VBT_Ref(const struct suckaddr *ip4,
const struct suckaddr *ip6);
diff --git a/bin/varnishd/cache/cache_backend_cfg.c b/bin/varnishd/cache/cache_backend_cfg.c
index fc619c0..eb22855 100644
--- a/bin/varnishd/cache/cache_backend_cfg.c
+++ b/bin/varnishd/cache/cache_backend_cfg.c
@@ -177,7 +177,6 @@ backend_find(struct cli *cli, const char *matcher, bf_func *func, void *priv)
VSB_printf(vsb, "%s.%s", vcc->loaded_name, matcher);
}
AZ(VSB_finish(vsb));
- VCLI_Out(cli, "Using pattern \"%s\"\n", VSB_data(vsb));
VTAILQ_FOREACH(b, &backends, list) {
if (fnmatch(VSB_data(vsb), b->display_name, 0))
continue;
@@ -197,15 +196,10 @@ backend_find(struct cli *cli, const char *matcher, bf_func *func, void *priv)
static int __match_proto__()
do_list(struct cli *cli, struct backend *b, void *priv)
{
- int *hdr;
+ int *probes;
AN(priv);
- hdr = priv;
- if (!*hdr) {
- VCLI_Out(cli, "%-30s %-10s %s",
- "Backend name", "Admin", "Probe");
- *hdr = 1;
- }
+ probes = priv;
CHECK_OBJ_NOTNULL(b, BACKEND_MAGIC);
VCLI_Out(cli, "\n%-30s", b->display_name);
@@ -226,7 +220,7 @@ do_list(struct cli *cli, struct backend *b, void *priv)
VCLI_Out(cli, " %s", "Healthy ");
else
VCLI_Out(cli, " %s", "Sick ");
- VBP_Summary(cli, b->probe);
+ VBP_Status(cli, b, *probes);
}
/* XXX: report b->health_changed */
@@ -237,12 +231,24 @@ do_list(struct cli *cli, struct backend *b, void *priv)
static void
cli_backend_list(struct cli *cli, const char * const *av, void *priv)
{
- int hdr = 0;
+ int probes = 0;
- (void)av;
(void)priv;
ASSERT_CLI();
- (void)backend_find(cli, av[2], do_list, &hdr);
+ if (av[2] != NULL && !strcmp(av[2], "-p")) {
+ av++;
+ probes = 1;
+ } else if (av[2] != NULL && av[2][0] == '-') {
+ VCLI_Out(cli, "Invalid flags %s", av[2]);
+ VCLI_SetResult(cli, CLIS_PARAM);
+ return;
+ } else if (av[3] != NULL) {
+ VCLI_Out(cli, "Too many arguments");
+ VCLI_SetResult(cli, CLIS_PARAM);
+ return;
+ }
+ VCLI_Out(cli, "%-30s %-10s %s", "Backend name", "Admin", "Probe");
+ (void)backend_find(cli, av[2], do_list, &probes);
}
/*---------------------------------------------------------------------*/
@@ -293,7 +299,7 @@ cli_backend_set_health(struct cli *cli, const char * const *av, void *priv)
static struct cli_proto backend_cmds[] = {
{ "backend.list", "backend.list [<backend_expression>]",
"\tList backends.",
- 0, 1, "", cli_backend_list },
+ 0, 2, "", cli_backend_list },
{ "backend.set_health",
"backend.set_health <backend_expression> <state>",
"\tSet health status on the backends.",
diff --git a/bin/varnishd/cache/cache_backend_poll.c b/bin/varnishd/cache/cache_backend_poll.c
index e18a683..a3db64b 100644
--- a/bin/varnishd/cache/cache_backend_poll.c
+++ b/bin/varnishd/cache/cache_backend_poll.c
@@ -98,14 +98,10 @@ vbp_poke(struct vbp_target *vt)
int s, tmo, i;
double t_start, t_now, t_end;
unsigned rlen, resp;
- struct backend *bp;
char buf[8192], *p;
struct pollfd pfda[1], *pfd = pfda;
const struct suckaddr *sa;
- bp = vt->backend;
- CHECK_OBJ_NOTNULL(bp, BACKEND_MAGIC);
-
t_start = t_now = VTIM_real();
t_end = t_start + vt->probe.timeout;
@@ -293,20 +289,13 @@ vbp_wrk_poll_backend(void *priv)
* Cli functions
*/
-void
-VBP_Summary(struct cli *cli, const struct vbp_target *vt)
-{
-
- CHECK_OBJ_NOTNULL(vt, VBP_TARGET_MAGIC);
- VCLI_Out(cli, "%d/%d", vt->good, vt->probe.window);
-}
-
static void
vbp_bitmap(struct cli *cli, char c, uint64_t map, const char *lbl)
{
int i;
uint64_t u = (1ULL << 63);
+ VCLI_Out(cli, " ");
for (i = 0; i < 64; i++) {
if (map & u)
VCLI_Out(cli, "%c", c);
@@ -323,18 +312,14 @@ static void
vbp_health_one(struct cli *cli, const struct vbp_target *vt)
{
- VCLI_Out(cli, "Backend %s is %s\n",
- vt->backend->vcl_name,
- vt->backend->healthy ? "Healthy" : "Sick");
- VCLI_Out(cli, "Current states good: %2u threshold: %2u window: %2u\n",
+ VCLI_Out(cli,
+ " Current states good: %2u threshold: %2u window: %2u\n",
vt->good, vt->probe.threshold, vt->probe.window);
- VCLI_Out(cli, "Average responsetime of good probes: %.6f\n", vt->avg);
VCLI_Out(cli,
- "Oldest "
- " Newest\n");
+ " Average response time of good probes: %.6f\n", vt->avg);
VCLI_Out(cli,
- "============================="
- "===================================\n");
+ " Oldest ======================"
+ "============================ Newest\n");
#define BITMAP(n, c, t, b) \
if ((vt->n != 0) || (b)) \
@@ -343,26 +328,23 @@ vbp_health_one(struct cli *cli, const struct vbp_target *vt)
#undef BITMAP
}
-static void
-vbp_health(struct cli *cli, const char * const *av, void *priv)
+void
+VBP_Status(struct cli *cli, const struct backend *be, int details)
{
struct vbp_target *vt;
- ASSERT_CLI();
- (void)av;
- (void)priv;
-
- VTAILQ_FOREACH(vt, &vbp_list, list)
+ CHECK_OBJ_NOTNULL(be, BACKEND_MAGIC);
+ vt = be->probe;
+ CHECK_OBJ_NOTNULL(vt, VBP_TARGET_MAGIC);
+ VCLI_Out(cli, "%d/%d", vt->good, vt->probe.window);
+ if (details) {
+ VCLI_Out(cli, "\n");
vbp_health_one(cli, vt);
+ } else {
+ VCLI_Out(cli, "%d/%d", vt->good, vt->probe.window);
+ }
}
-static struct cli_proto debug_cmds[] = {
- { "debug.health", "debug.health",
- "\tDump backend health information.",
- 0, 0, "d", vbp_health },
- { NULL }
-};
-
/*--------------------------------------------------------------------
* Build request from probe spec
*/
@@ -483,14 +465,3 @@ VBP_Remove(struct backend *b)
free(vt->req);
FREE_OBJ(vt);
}
-
-/*--------------------------------------------------------------------
- * Initialize the backend probe subsystem
- */
-
-void
-VBP_Init(void)
-{
-
- CLI_AddFuncs(debug_cmds);
-}
diff --git a/bin/varnishd/cache/cache_main.c b/bin/varnishd/cache/cache_main.c
index b5f9b0b..1f2f48f 100644
--- a/bin/varnishd/cache/cache_main.c
+++ b/bin/varnishd/cache/cache_main.c
@@ -221,7 +221,6 @@ child_main(void)
VBO_Init();
VBE_InitCfg();
- VBP_Init();
Pool_Init();
V1P_Init();
diff --git a/bin/varnishtest/tests/c00017.vtc b/bin/varnishtest/tests/c00017.vtc
index 2ad090e..9342c53 100644
--- a/bin/varnishtest/tests/c00017.vtc
+++ b/bin/varnishtest/tests/c00017.vtc
@@ -40,4 +40,4 @@ varnish v1 -vcl {
sema r1 sync 2
-varnish v1 -cli "debug.health"
+varnish v1 -cli "backend.list -p"
diff --git a/bin/varnishtest/tests/c00035.vtc b/bin/varnishtest/tests/c00035.vtc
index 8b6bbea..5eab71d 100644
--- a/bin/varnishtest/tests/c00035.vtc
+++ b/bin/varnishtest/tests/c00035.vtc
@@ -30,7 +30,7 @@ varnish v1 -vcl {
delay 1
varnish v1 -cliok "vcl.list"
-varnish v1 -cliok "debug.health"
+varnish v1 -cliok "backend.list -p"
server s1 -break {
rxreq
diff --git a/bin/varnishtest/tests/v00014.vtc b/bin/varnishtest/tests/v00014.vtc
index 6769a24..4a290b0 100644
--- a/bin/varnishtest/tests/v00014.vtc
+++ b/bin/varnishtest/tests/v00014.vtc
@@ -44,7 +44,7 @@ varnish v1 -vcl {
}
} -start
-varnish v1 -cliok "backend.list" -cliok "debug.health"
+varnish v1 -cliok "backend.list -p"
client c1 {
txreq
More information about the varnish-commit
mailing list