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