fix resolve= parameter for self-sharding

in vcl_backend_response {} and vcl_backend_error {} we test if
`bereq.backend == vk8s_cluster.backend(resolve=LAZY)`. With the
current code, this condition will never evaluate true, because
`resolve=NOW` will make the shard director return the "real" (VBE)
backend.

With this patch, the net effect, the chosen cluster varnish backend,
should still be the same, except for the rare race event that the
backend becomes unhealthy between the time the vcl code executes and
when the backend connection is made. We already account for this race
by setting `req.hash_ignore_busy` in vcl_revc {}.
parent f2d24fe5
......@@ -72,7 +72,7 @@ sub vcl_backend_fetch {
&& !bereq.uncacheable
&& remote.ip !~ vk8s_cluster_acl
&& "" + vk8s_cluster.backend(resolve=NOW) != server.identity) {
set bereq.backend = vk8s_cluster.backend(resolve=NOW);
set bereq.backend = vk8s_cluster.backend(resolve=LAZY);
set bereq.http.VK8S-Is-Bgfetch = bereq.is_bgfetch;
return (fetch);
}
......
......@@ -173,7 +173,7 @@ sub vcl_backend_fetch {
&& !bereq.uncacheable
&& remote.ip !~ vk8s_cluster_acl
&& "" + vk8s_cluster.backend(resolve=NOW) != server.identity) {
set bereq.backend = vk8s_cluster.backend(resolve=NOW);
set bereq.backend = vk8s_cluster.backend(resolve=LAZY);
set bereq.http.VK8S-Is-Bgfetch = bereq.is_bgfetch;
return (fetch);
}
......
......@@ -71,7 +71,7 @@ sub vcl_backend_fetch {
&& !bereq.uncacheable
&& remote.ip !~ vk8s_cluster_acl
&& "" + vk8s_cluster.backend(resolve=NOW) != server.identity) {
set bereq.backend = vk8s_cluster.backend(resolve=NOW);
set bereq.backend = vk8s_cluster.backend(resolve=LAZY);
set bereq.http.VK8S-Is-Bgfetch = bereq.is_bgfetch;
return (fetch);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment