[MediaWiki-commits] [Gerrit] operations/puppet[production]: Serve a synth error page when error body is empty in Varnish

2017-08-31 Thread Ema (Code Review)
Ema has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/365589 )

Change subject: Serve a synth error page when error body is empty in Varnish
..


Serve a synth error page when error body is empty in Varnish

Bug: T169683
Change-Id: Ifeab7bc8fd21e1d91935572a05efb0d00f8eab01
---
A modules/varnish/files/tests/text/14-custom-error.vtc
M modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
M modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
M modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
4 files changed, 40 insertions(+), 0 deletions(-)

Approvals:
  Ema: Verified; Looks good to me, approved



diff --git a/modules/varnish/files/tests/text/14-custom-error.vtc 
b/modules/varnish/files/tests/text/14-custom-error.vtc
new file mode 100644
index 000..d64bb2c
--- /dev/null
+++ b/modules/varnish/files/tests/text/14-custom-error.vtc
@@ -0,0 +1,21 @@
+varnishtest "Custom error when empty error body"
+
+server s1 {
+rxreq
+txresp -status 404 -body ""
+} -start
+
+varnish v1 -arg "-p cc_command='exec cc -fpic -shared -Wl,-x -L/usr/local/lib/ 
-o %o %s -lmaxminddb' -p vcc_allow_inline_c=true -p vcc_err_unref=false" 
-vcl+backend {
+backend vtc_backend {
+.host = "${s1_addr}"; .port = "${s1_port}";
+}
+
+include "/usr/share/varnish/tests/wikimedia_text-frontend.vcl";
+} -start
+
+client c1 {
+txreq
+rxresp
+expect resp.status == 404
+expect resp.bodylen > 0
+} -run
diff --git a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
index 31e7fd3..5f63062 100644
--- a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
@@ -182,6 +182,7 @@
 sub vcl_deliver {
call wm_common_deliver_hitcount;
call wm_common_xcache_deliver;
+   call wm_common_deliver_error_with_empty_body;
call cluster_be_deliver;
return (deliver); // no default VCL (which is just "return (deliver)" 
anyways)
 }
diff --git a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
index 014e85f..eb5c727 100644
--- a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
@@ -459,3 +459,20 @@
}
}
 }
+
+sub wm_common_deliver_error_with_empty_body {
+// Provides custom error html if error response has no body
+if (resp.http.Content-Length == "0" && resp.status >= 400) {
+# Varnish doesn't define status codes from RFC6585
+if (resp.status == 428) {
+return(synth(resp.status, "Precondition Required"));
+} elseif (resp.status == 429) {
+return(synth(resp.status, "Too Many Requests"));
+} elseif (resp.status == 431) {
+return(synth(resp.status, "Request Header Fields Too Large"));
+} elseif (resp.status == 511) {
+return(synth(resp.status, "Network Authentication Required"));
+}
+return(synth(resp.status));
+}
+}
diff --git a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
index 8864b7f..0e25406 100644
--- a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
@@ -413,6 +413,7 @@
 
 sub vcl_deliver {
call wm_common_deliver_hitcount;
+   call wm_common_deliver_error_with_empty_body;
call deliver_synth_;
call cluster_fe_deliver;
return (deliver); // no default VCL (which is just "return (deliver)" 
anyways)

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ifeab7bc8fd21e1d91935572a05efb0d00f8eab01
Gerrit-PatchSet: 5
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Gilles 
Gerrit-Reviewer: BBlack 
Gerrit-Reviewer: Ema 
Gerrit-Reviewer: Filippo Giunchedi 
Gerrit-Reviewer: jenkins-bot <>

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


[MediaWiki-commits] [Gerrit] operations/puppet[production]: Serve a synth error page when error body is empty in Varnish

2017-07-17 Thread Gilles (Code Review)
Gilles has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/365589 )

Change subject: Serve a synth error page when error body is empty in Varnish
..

Serve a synth error page when error body is empty in Varnish

Bug: T169683
Change-Id: Ifeab7bc8fd21e1d91935572a05efb0d00f8eab01
---
M modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
M modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
M modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
3 files changed, 19 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/89/365589/1

diff --git a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
index f036adb..d57d94a 100644
--- a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
@@ -175,6 +175,7 @@
 sub vcl_deliver {
call wm_common_deliver_hitcount;
call wm_common_xcache_deliver;
+   call wm_common_deliver_error_with_empty_body;
call cluster_be_deliver;
return (deliver); // no default VCL (which is just "return (deliver)" 
anyways)
 }
diff --git a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
index 014e85f..4e9da8f 100644
--- a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
@@ -459,3 +459,20 @@
}
}
 }
+
+wm_common_deliver_error_with_empty_body {
+// Provides custom error html if error response has no body
+if (resp.http.Content-Length == "0" && resp.status >= 400) {
+# Varnish doesn't define status codes from RFC6585
+if (resp.status == 428) {
+return(synth(resp.status, "Precondition Required"));
+} elseif (resp.status == 429) {
+return(synth(resp.status, "Too Many Requests"));
+} elseif (resp.status == 431) {
+return(synth(resp.status, "Request Header Fields Too Large"));
+} elseif (resp.status == 511) {
+return(synth(resp.status, "Network Authentication Required"));
+}
+return(synth(resp.status));
+}
+}
diff --git a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
index 44f2a41..e3f54c5 100644
--- a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
@@ -393,6 +393,7 @@
 
 sub vcl_deliver {
call wm_common_deliver_hitcount;
+   call wm_common_deliver_error_with_empty_body;
call deliver_synth_;
call cluster_fe_deliver;
return (deliver); // no default VCL (which is just "return (deliver)" 
anyways)

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifeab7bc8fd21e1d91935572a05efb0d00f8eab01
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Gilles 

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