[master] 1514de5 shard director: change default to resolve=LAZY in vcl_init{}

Nils Goroll nils.goroll at uplex.de
Fri Mar 9 15:42:09 UTC 2018


commit 1514de54fac052c59d3f65b639394aad5eb66cbc
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Fri Mar 9 16:41:09 2018 +0100

    shard director: change default to resolve=LAZY in vcl_init{}

diff --git a/bin/varnishtest/tests/d00021.vtc b/bin/varnishtest/tests/d00021.vtc
index c62e77e..9633561 100644
--- a/bin/varnishtest/tests/d00021.vtc
+++ b/bin/varnishtest/tests/d00021.vtc
@@ -50,7 +50,7 @@ varnish v1 -vcl+backend {
 		std.log("reconfigure failed");
 	    }
 	    new ll = directors.round_robin();
-	    ll.add_backend(l.backend(resolve=LAZY));
+	    ll.add_backend(l.backend());
 	}
 
 	sub vcl_recv {
diff --git a/bin/varnishtest/tests/d00030.vtc b/bin/varnishtest/tests/d00030.vtc
index 202c485..497b3c7 100644
--- a/bin/varnishtest/tests/d00030.vtc
+++ b/bin/varnishtest/tests/d00030.vtc
@@ -181,6 +181,6 @@ varnish v1 -errvcl {resolve=NOW can not be used in vcl_init} {
     sub vcl_init {
 	new shard = directors.shard();
 	new rr = directors.round_robin();
-	rr.add_backend(shard.backend());
+	rr.add_backend(shard.backend(resolve=NOW));
     }
 }
diff --git a/lib/libvmod_directors/vmod.vcc b/lib/libvmod_directors/vmod.vcc
index c2106a3..d240119 100644
--- a/lib/libvmod_directors/vmod.vcc
+++ b/lib/libvmod_directors/vmod.vcc
@@ -535,6 +535,8 @@ is _not_ the order given when backends are added.
 
 * `resolve`
 
+  default: `LAZY` in ``vcl_init{}``, `NOW` otherwise
+
   * ``NOW``: look up a backend and return it.
 
     Can not be used in ``vcl_init{}``.
diff --git a/lib/libvmod_directors/vmod_shard.c b/lib/libvmod_directors/vmod_shard.c
index b672249..1a0504b 100644
--- a/lib/libvmod_directors/vmod_shard.c
+++ b/lib/libvmod_directors/vmod_shard.c
@@ -602,7 +602,13 @@ vmod_shard_backend(VRT_CTX, struct vmod_directors_shard *vshard,
 	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
 	CHECK_OBJ_NOTNULL(vshard, VMOD_SHARD_SHARD_MAGIC);
 	assert((args & ~_arg_mask) == 0);
-	resolve = (args & arg_resolve) ? parse_resolve_e(a->resolve) : NOW;
+
+	if (args & arg_resolve)
+		resolve = parse_resolve_e(a->resolve);
+	else if (ctx->method & VCL_MET_TASK_H)
+		resolve = LAZY;
+	else
+		resolve = NOW;
 
 	switch (resolve) {
 	case LAZY:


More information about the varnish-commit mailing list