Ema has submitted this change and it was merged.

Change subject: cache_upload VCL forward port to Varnish 4
......................................................................


cache_upload VCL forward port to Varnish 4

Bug: T131502
Change-Id: I72627d1015099b8f59a05e23b14ee095be7e65e4
---
M modules/varnish/manifests/instance.pp
M templates/varnish/upload-backend.inc.vcl.erb
M templates/varnish/upload-common.inc.vcl.erb
M templates/varnish/upload-frontend.inc.vcl.erb
4 files changed, 47 insertions(+), 25 deletions(-)

Approvals:
  Ema: Verified; Looks good to me, approved
  BBlack: Looks good to me, but someone else must approve



diff --git a/modules/varnish/manifests/instance.pp 
b/modules/varnish/manifests/instance.pp
index a0612f1..279354f 100644
--- a/modules/varnish/manifests/instance.pp
+++ b/modules/varnish/manifests/instance.pp
@@ -49,6 +49,9 @@
         # 
https://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html#obj-in-vcl-error-replaced-by-beresp-in-vcl-backend-error
         $beresp_obj = 'beresp'
 
+        # storage has been renamed to storage_hint
+        $storage_hint_storage = 'storage_hint'
+
         # 
https://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html#obj-is-now-read-only
         $resp_obj = 'resp'
 
@@ -73,6 +76,7 @@
 
         $bereq_req = 'req'
         $beresp_obj = 'obj'
+        $storage_hint_storage = 'storage'
         $resp_obj = 'obj'
         $hash_lookup = 'lookup'
         $purge_lookup = 'lookup'
diff --git a/templates/varnish/upload-backend.inc.vcl.erb 
b/templates/varnish/upload-backend.inc.vcl.erb
index 092244d..b9452d4 100644
--- a/templates/varnish/upload-backend.inc.vcl.erb
+++ b/templates/varnish/upload-backend.inc.vcl.erb
@@ -3,17 +3,17 @@
 
 sub pick_main_stevedore {
        if (std.random(0, 2) < 1) {
-               set beresp.storage = "main1";
+               set beresp.<%= @storage_hint_storage %> = "main1";
        } else {
-               set beresp.storage = "main2";
+               set beresp.<%= @storage_hint_storage %> = "main2";
        }
 }
 
 sub pick_large_object_stevedore {
        if (std.random(0, 2) < 1) {
-               set beresp.storage = "bigobj1";
+               set beresp.<%= @storage_hint_storage %> = "bigobj1";
        } else {
-               set beresp.storage = "bigobj2";
+               set beresp.<%= @storage_hint_storage %> = "bigobj2";
        }
 }
 
@@ -21,9 +21,17 @@
 
 sub cluster_be_recv_applayer_backend {
        if (req.url ~ "^/+[^/]+/[^/]+/thumb/") {
+               <%- if @varnish_version4 -%>
+               set req.backend_hint = swift_thumbs.backend();
+               <%- else -%>
                set req.backend = swift_thumbs;
+               <%- end -%>
        } else {
+               <%- if @varnish_version4 -%>
+               set req.backend_hint = swift.backend();
+               <%- else -%>
                set req.backend = swift;
+               <%- end -%>
        }
 }
 
@@ -55,7 +63,7 @@
        }
 
        if (req.http.If-Cached) {
-               error 412 "Entity not in cache";
+               <%= error_synth(412, "Entity not in cache") -%>
        }
 }
 
@@ -81,8 +89,8 @@
        }
 
        // Derive the corresponding original URL and store it with the object
-       if (!beresp.http.X-MediaWiki-Original && req.url ~ 
"^/+[^/]+/[^/]+/thumb/[^/]+/[^/]+/[^/]+/[0-9]+px-") {
-               set beresp.http.X-MediaWiki-Original = regsub(req.url, 
"^(/+[^/]+/[^/]+/)thumb/([^/]+/[^/]+/[^/]+).*$", "\1\2");
+       if (!beresp.http.X-MediaWiki-Original && <%= @bereq_req %>.url ~ 
"^/+[^/]+/[^/]+/thumb/[^/]+/[^/]+/[^/]+/[0-9]+px-") {
+               set beresp.http.X-MediaWiki-Original = regsub(<%= @bereq_req 
%>.url, "^(/+[^/]+/[^/]+/)thumb/([^/]+/[^/]+/[^/]+).*$", "\1\2");
        }
 
        return (deliver);
diff --git a/templates/varnish/upload-common.inc.vcl.erb 
b/templates/varnish/upload-common.inc.vcl.erb
index d0b150e..11b2ad2 100644
--- a/templates/varnish/upload-common.inc.vcl.erb
+++ b/templates/varnish/upload-common.inc.vcl.erb
@@ -2,13 +2,13 @@
 
 sub upload_common_recv {
        if (req.http.host != "<%= @vcl_config.fetch('upload_domain') %>") {
-               error 404 "Requested domainname does not exist on this server";
+               <%= error_synth(404, "Requested domainname does not exist on 
this server") -%>
        }
 }
 
 sub upload_common_hit {
        if (req.http.If-Cached && req.http.If-Cached != obj.http.Etag) {
-               error 412 "Etag mismatch";
+               <%= error_synth(412, "Etag mismatch") -%>
        }
 }
 
diff --git a/templates/varnish/upload-frontend.inc.vcl.erb 
b/templates/varnish/upload-frontend.inc.vcl.erb
index 66c252e..7ffb267 100644
--- a/templates/varnish/upload-frontend.inc.vcl.erb
+++ b/templates/varnish/upload-frontend.inc.vcl.erb
@@ -5,13 +5,13 @@
 
 sub cluster_fe_recv {
        // CORS preflight requests
-       if (req.request == "OPTIONS" && req.http.Origin) {
-               error 667 "OK";
+       if (<%= @req_method %> == "OPTIONS" && req.http.Origin) {
+               <%= error_synth(667, "OK") -%>
        }
 
        // Homepage redirect to commons
        if (req.url == "/") {
-               error 666 "Moved Permanently";
+               <%= error_synth(666, "Moved Permanently") -%>
        }
 
        call upload_common_recv;
@@ -59,7 +59,12 @@
                        set beresp.do_stream = true;
                        // don't attempt to cache these in the frontend
                        set beresp.http.X-CDIS = "pass";
+                       <%- if @varnish_version4 -%>
+                       set beresp.uncacheable = true;
+                       return (deliver);
+                       <%- else -%>
                        return (hit_for_pass);
+                       <%- end -%>
                }
        }
 
@@ -70,7 +75,12 @@
                if (std.integer(beresp.http.Content-Length, 50331648) >= 
50331648 || beresp.http.Content-Length ~ "^[0-9]{9}") {
                        // don't attempt to cache these in the frontend
                        set beresp.http.X-CDIS = "pass";
+                       <%- if @varnish_version4 -%>
+                       set beresp.uncacheable = true;
+                       return (deliver);
+                       <%- else -%>
                        return (hit_for_pass);
+                       <%- end -%>
                }
        }
 
@@ -114,26 +124,26 @@
 
 sub cluster_fe_err_synth {
        // Handle CORS preflight requests
-       if (obj.status == 667) {
-               set obj.status = 200;
-               set obj.http.Connection = "keep-alive";
-               set obj.http.Content-Length = "0";
+       if (<%= @resp_obj %>.status == 667) {
+               set <%= @resp_obj %>.status = 200;
+               set <%= @resp_obj %>.http.Connection = "keep-alive";
+               set <%= @resp_obj %>.http.Content-Length = "0";
 
                // allow Range requests, used by ogv.js
-               set obj.http.Access-Control-Allow-Origin = "*";
-               set obj.http.Access-Control-Allow-Headers = "Range";
-               set obj.http.Access-Control-Allow-Methods = "GET, HEAD, 
OPTIONS";
-               set obj.http.Access-Control-Max-Age = "86400";
+               set <%= @resp_obj %>.http.Access-Control-Allow-Origin = "*";
+               set <%= @resp_obj %>.http.Access-Control-Allow-Headers = 
"Range";
+               set <%= @resp_obj %>.http.Access-Control-Allow-Methods = "GET, 
HEAD, OPTIONS";
+               set <%= @resp_obj %>.http.Access-Control-Max-Age = "86400";
 
                return (deliver);
        }
 
        // Homepage redirect to commons
-       if (obj.status == 666) {
-               set obj.status = 301;
-               set obj.http.Location = "https://commons.wikimedia.org/";;
-               set obj.http.Connection = "keep-alive";
-               set obj.http.Content-Length = "0";
+       if (<%= @resp_obj %>.status == 666) {
+               set <%= @resp_obj %>.status = 301;
+               set <%= @resp_obj %>.http.Location = 
"https://commons.wikimedia.org/";;
+               set <%= @resp_obj %>.http.Connection = "keep-alive";
+               set <%= @resp_obj %>.http.Content-Length = "0";
                return (deliver);
        }
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I72627d1015099b8f59a05e23b14ee095be7e65e4
Gerrit-PatchSet: 5
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ema <e...@wikimedia.org>
Gerrit-Reviewer: BBlack <bbl...@wikimedia.org>
Gerrit-Reviewer: Ema <e...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to