[5.1] 5dd70af Set the go-cold timer on newly loaded warm auto VCLs

Martin Blix Grydeland martin at varnish-software.com
Mon Apr 10 13:59:07 CEST 2017


commit 5dd70aff3e968f173d3b747b1d1a2bb805be5f6f
Author: Martin Blix Grydeland <martin at varnish-software.com>
Date:   Wed Mar 22 10:59:54 2017 +0100

    Set the go-cold timer on newly loaded warm auto VCLs
    
    Newly loaded VCLs didn't get their go cold timer set even when they
    were set to auto, causing them to never go cold automatically.
    
    Fixes: #2270

diff --git a/bin/varnishd/mgt/mgt_vcl.c b/bin/varnishd/mgt/mgt_vcl.c
index 8849752..9a1a42b 100644
--- a/bin/varnishd/mgt/mgt_vcl.c
+++ b/bin/varnishd/mgt/mgt_vcl.c
@@ -481,8 +481,13 @@ mgt_new_vcl(struct cli *cli, const char *vclname, const char *vclsrc,
 		mgt_vcl_del(vp);
 		VCLI_Out(cli, "%s", p);
 		VCLI_SetResult(cli, status);
+		free(p);
+		return;
 	}
 	free(p);
+
+	if (vp->warm && !strcmp(vp->state, "auto"))
+		vp->go_cold = VTIM_mono();
 }
 
 /*--------------------------------------------------------------------*/
diff --git a/bin/varnishtest/tests/r02270.vtc b/bin/varnishtest/tests/r02270.vtc
new file mode 100644
index 0000000..8547ca5
--- /dev/null
+++ b/bin/varnishtest/tests/r02270.vtc
@@ -0,0 +1,19 @@
+varnishtest "Test that never used VCLs go cold automatically"
+
+server s1 {
+	rxreq
+	txresp
+} -start
+
+varnish v1 -arg "-p vcl_cooldown=1" -vcl+backend {
+} -start
+
+varnish v1 -expect VBE.vcl1.s1.happy >= 0
+
+varnish v1 -cliok {vcl.inline vcl2 "vcl 4.0; backend s1 {.host = \"${s1_addr}\"; .port = \"${s1_port}\"; }"}
+
+varnish v1 -expect VBE.vcl2.s1.happy >= 0
+
+delay 5
+
+varnish v1 -expect !VBE.vcl2.s1.happy



More information about the varnish-commit mailing list