Ema has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/314716

Change subject: WIP: Text VCL forward-port to Varnish 4
......................................................................

WIP: Text VCL forward-port to Varnish 4

Bug: T131503
Change-Id: I6789d1129aee77f5eb8b7816afeaac2c1a7a1a41
---
M modules/varnish/templates/initscripts/varnish.systemd.erb
M modules/varnish/templates/text-backend.inc.vcl.erb
M modules/varnish/templates/text-common.inc.vcl.erb
3 files changed, 60 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/16/314716/1

diff --git a/modules/varnish/templates/initscripts/varnish.systemd.erb 
b/modules/varnish/templates/initscripts/varnish.systemd.erb
index 3d2414d..c3397f6 100644
--- a/modules/varnish/templates/initscripts/varnish.systemd.erb
+++ b/modules/varnish/templates/initscripts/varnish.systemd.erb
@@ -27,6 +27,7 @@
 <% if @varnish_version4 -%>
 -p thread_pool_min=250 -p thread_pool_max=<%= @processorcount.to_i * 250 -%> 
-p thread_pool_timeout=120 \
 -p vsl_reclen=2048 \
+-p vcc_allow_inline_c=true \
 <% else -%>
 -w 250,<%= @processorcount.to_i * 250 -%>,120 \
 -p shm_reclen=2048 \
diff --git a/modules/varnish/templates/text-backend.inc.vcl.erb 
b/modules/varnish/templates/text-backend.inc.vcl.erb
index 5ef7d09..02e1a3f 100644
--- a/modules/varnish/templates/text-backend.inc.vcl.erb
+++ b/modules/varnish/templates/text-backend.inc.vcl.erb
@@ -3,28 +3,58 @@
 include "text-common.inc.vcl";
 
 sub cluster_be_recv_pre_purge {
-       if (req.request == "PURGE") {
+       if (<%= @req_method %> == "PURGE") {
                call text_normalize_path;
        }
 }
 
 sub cluster_be_recv_applayer_backend {
        if (req.http.Host == "cxserver.wikimedia.org" ) { # LEGACY: to be 
removed eventually
+               <%- if @varnish_version4 -%>
+               set req.backend_hint = cxserver_backend.backend();
+               <%- else -%>
                set req.backend = cxserver_backend;
+               <%- end -%>
        } else if (req.http.Host == "citoid.wikimedia.org" ) { # LEGACY: to be 
removed eventually
+               <%- if @varnish_version4 -%>
+               set req.backend_hint = citoid_backend.backend();
+               <%- else -%>
                set req.backend = citoid_backend;
+               <%- end -%>
        } else { // default for all other hostnames
                if (req.url ~ "^/api/rest_v1/") {
+                       <%- if @varnish_version4 -%>
+                       set req.backend_hint = restbase_backend.backend();
+                       <%- else -%>
                        set req.backend = restbase_backend;
+                       <%- end -%>
                } else if (req.url ~ "^/w/api\.php") {
+                       <%- if @varnish_version4 -%>
+                       set req.backend_hint = api.backend();
+                       <%- else -%>
                        set req.backend = api;
+                       <%- end -%>
                } else if (req.url ~ "^/w/thumb(_handler)?\.php") {
+                       <%- if @varnish_version4 -%>
+                       set req.backend_hint = rendering.backend();
+                       <%- else -%>
                        set req.backend = rendering;
+                       <%- end -%>
                } else {
+                       <%- if @varnish_version4 -%>
+                       set req.backend_hint = appservers.backend();
+                       <%- else -%>
                        set req.backend = appservers;
+                       <%- end -%>
                }
        }
 
+       <%- if @varnish_version4 -%>
+       // FIXME: how to translate the req.backend == appservers part to v4?
+       if (req.http.X-Wikimedia-Debug) {
+               set req.backend_hint = appservers_debug.backend();
+       }
+       <%- else -%>
        if (req.http.X-Wikimedia-Debug && (
                req.backend == appservers
                || req.backend == rendering
@@ -32,10 +62,15 @@
        )) {
                set req.backend = appservers_debug;
        }
+       <%- end -%>
 
 <% if @varnish_directors.include?('security_audit') && 
!@varnish_directors['security_audit']['backends'].empty? %>
        if (req.http.X-Wikimedia-Security-Audit == "1") {
+               <%- if @varnish_version4 -%>
+               set req.backend_hint = security_audit.backend();
+               <%- else -%>
                set req.backend = security_audit;
+               <%- end -%>
        }
 <% end %>
 }
@@ -73,29 +108,41 @@
 sub cluster_be_hit { }
 
 sub cluster_be_miss {
+       <%- if not @varnish_version4 -%>
        call misspass_mangle;
        call text_common_misspass_restore_cookie;
+       <%- end -%>
 }
 
 sub cluster_be_pass {
+       <%- if not @varnish_version4 -%>
        call misspass_mangle;
        call text_common_misspass_restore_cookie;
+       <%- end -%>
 }
 
 <% if @varnish_version4 -%>
-sub cluster_be_backend_fetch { }
+sub cluster_be_backend_fetch {
+       call misspass_mangle;
+       call text_common_misspass_restore_cookie;
+}
 <% end -%>
 
 sub cluster_be_backend_response {
        // Make sure Set-Cookie responses are not cacheable, and log violations
        // FIXME: exceptions are ugly; maybe get rid of the whole thing?
        if (beresp.ttl > 0s && beresp.http.Set-Cookie &&
-               req.url !~ "^/wiki/Special:HideBanners") {
-               std.log("Cacheable object with Set-Cookie found. req.url: " + 
req.url + " Cache-Control: " + beresp.http.Cache-Control + " Set-Cookie: " + 
beresp.http.Set-Cookie);
+               <%= @bereq_req %>.url !~ "^/wiki/Special:HideBanners") {
+               std.log("Cacheable object with Set-Cookie found. <%= @bereq_req 
%>.url: " + <%= @bereq_req %>.url + " Cache-Control: " + 
beresp.http.Cache-Control + " Set-Cookie: " + beresp.http.Set-Cookie);
                set beresp.http.Cache-Control = "private, max-age=0, 
s-maxage=0";
                set beresp.ttl = 0s;
                set beresp.http.X-CDIS = "pass";
+               <%- if @varnish_version4 -%>
+               set beresp.uncacheable = true;
+               return (deliver);
+               <%- else -%>
                return (hit_for_pass);
+               <%- end -%>
        }
 
        // FIXME: Fix up missing Vary headers on Apache redirects
diff --git a/modules/varnish/templates/text-common.inc.vcl.erb 
b/modules/varnish/templates/text-common.inc.vcl.erb
index 2831af7..b018093 100644
--- a/modules/varnish/templates/text-common.inc.vcl.erb
+++ b/modules/varnish/templates/text-common.inc.vcl.erb
@@ -77,7 +77,7 @@
 
 // fe+be common recv code
 sub text_common_recv {
-       if (req.request != "GET" && req.request != "HEAD") {
+       if (<%= @req_method %> != "GET" && <%= @req_method %> != "HEAD") {
                return (pass);
        }
 
@@ -121,7 +121,7 @@
 
 // fe+be common fetch code
 sub text_common_backend_response {
-       if (req.http.X-Subdomain && (req.url ~ "mobileaction=" || req.url ~ 
"useformat=")) {
+       if (<%= @bereq_req %>.http.X-Subdomain && (<%= @bereq_req %>.url ~ 
"mobileaction=" || <%= @bereq_req %>.url ~ "useformat=")) {
                set beresp.ttl = 60 s;
        }
 
@@ -146,12 +146,17 @@
                && beresp.status < 500
                && (!beresp.http.X-Cache-Int || beresp.http.X-Cache-Int !~ " 
hit")
            ) || (
-               req.http.Cookie == "Token=1"
+               <%= @bereq_req %>.http.Cookie == "Token=1"
                && beresp.http.Vary ~ "(?i)(^|,)\s*Cookie\s*(,|$)"
            )
        ) {
                set beresp.ttl = 601s;
                set beresp.http.X-CDIS = "pass";
+               <%- if @varnish_version4 -%>
+               set beresp.uncacheable = true;
+               return (deliver);
+               <%- else -%>
                return (hit_for_pass);
+               <%- end -%>
        }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/314716
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6789d1129aee77f5eb8b7816afeaac2c1a7a1a41
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ema <e...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to