[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