[master] b3a74ff Allow to reset the child_panic counter

Federico G. Schwindt fgsch at lodoss.net
Mon Mar 23 18:14:04 CET 2015


commit b3a74ff9a50a7a658edbfce2860a598faa286ae4
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date:   Mon Mar 23 17:04:21 2015 +0000

    Allow to reset the child_panic counter
    
    panic.clear gains a -z optional parameter.
    
    Fixes #1609.

diff --git a/bin/varnishd/mgt/mgt_child.c b/bin/varnishd/mgt/mgt_child.c
index e67b419..9ce3aaa 100644
--- a/bin/varnishd/mgt/mgt_child.c
+++ b/bin/varnishd/mgt/mgt_child.c
@@ -159,9 +159,17 @@ mcf_panic_show(struct cli *cli, const char * const *av, void *priv)
 void __match_proto__(cli_func_t)
 mcf_panic_clear(struct cli *cli, const char * const *av, void *priv)
 {
-	(void)av;
 	(void)priv;
 
+	if (av[2] != NULL && strcmp(av[2], "-z")) {
+		VCLI_SetResult(cli, CLIS_PARAM);
+		VCLI_Out(cli, "Unknown parameter \"%s\".", av[2]);
+		return;
+	} else if (av[2] != NULL) {
+		VSC_C_mgt->child_panic = static_VSC_C_mgt.child_panic = 0;
+		if (child_panic == NULL)
+			return;
+	}
 	if (child_panic == NULL) {
 		VCLI_SetResult(cli, CLIS_CANT);
 		VCLI_Out(cli, "No panic to clear");
diff --git a/bin/varnishtest/tests/v00010.vtc b/bin/varnishtest/tests/v00010.vtc
index 2fb3511..7b0d57e 100644
--- a/bin/varnishtest/tests/v00010.vtc
+++ b/bin/varnishtest/tests/v00010.vtc
@@ -49,6 +49,7 @@ client c1 {
 varnish v1 -wait-stopped
 varnish v1 -cliok "panic.show"
 varnish v1 -cliok "panic.clear"
+varnish v1 -expect MGT.child_panic == 1
 varnish v1 -clierr 300 "panic.clear"
 varnish v1 -cliok "start"
 varnish v1 -wait-running
@@ -65,7 +66,8 @@ client c1 {
 
 varnish v1 -wait-stopped
 varnish v1 -cliok "panic.show"
-varnish v1 -cliok "panic.clear"
+varnish v1 -cliok "panic.clear -z"
+varnish v1 -expect MGT.child_panic == 0
 varnish v1 -clierr 300 "panic.clear"
 varnish v1 -cliok "start"
 varnish v1 -wait-running
@@ -78,3 +80,5 @@ client c1 {
 	rxresp
 	expect resp.http.foo == "foo"
 } -run
+
+varnish v1 -cliok "panic.clear -z"
diff --git a/doc/sphinx/reference/varnish-cli.rst b/doc/sphinx/reference/varnish-cli.rst
index 663dcd2..e400408 100644
--- a/doc/sphinx/reference/varnish-cli.rst
+++ b/doc/sphinx/reference/varnish-cli.rst
@@ -128,7 +128,7 @@ param.set <param> <value>
 panic.show
   Return the last panic, if any.
 
-panic.clear
+panic.clear [-z]
   Clear the last panic, if any.
 
 storage.list
diff --git a/include/vcli.h b/include/vcli.h
index 32d3e70..da61d30 100644
--- a/include/vcli.h
+++ b/include/vcli.h
@@ -167,9 +167,9 @@
 
 #define CLI_PANIC_CLEAR							\
 	"panic.clear",							\
-	"panic.clear",							\
+	"panic.clear [-z]",						\
 	"\tClear the last panic, if any.",				\
-	0, 0
+	0, 1
 
 /*
  * Status/return codes in the CLI protocol



More information about the varnish-commit mailing list