Bug 1309598 - ProxyErrorOverride On disables workers when a 50x error code is returned by the backend server
ProxyErrorOverride On disables workers when a 50x error code is returned by t...
Status: VERIFIED
Product: JBoss Enterprise Web Server 2
Classification: JBoss
Component: mod_cluster, httpd (Show other bugs)
2.1.0
Unspecified Linux
medium Severity high
: CR01
: 2.1.1
Assigned To: George Zaronikas
Michal Karm Babacek
:
Depends On:
Blocks: 1338664
  Show dependency treegraph
 
Reported: 2016-02-18 04:07 EST by Ingo Weiss
Modified: 2016-11-04 11:40 EDT (History)
10 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
When a VirtualHost uses ProxyPass to proxy traffic to the backend uses ProxyErrorOverride to host custom error pages on Apache httpd side, when the backend replies with a 50x error code mod_proxy/mod_cluster marks that worker as down, breaking session stickiness. This issue is fixed.
Story Points: ---
Clone Of:
: 1338664 (view as bug list)
Environment:
Last Closed:
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
dmichael: needinfo-


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
JBoss Issue Tracker JWS-362 Major Closed ProxyErrorOverride=On causes workers in error state after 500 errors 2017-07-18 03:32 EDT
JBoss Issue Tracker MODCLUSTER-505 Major Closed ProxyErrorOverride=On causes workers in error state after 500 errors 2017-07-18 03:32 EDT
Red Hat Knowledge Base (Solution) 2171621 None None None 2016-03-29 15:25 EDT

  None (edit)
Description Ingo Weiss 2016-02-18 04:07:40 EST
Description of problem:

When a VirtualHost uses ProxyPass to proxy traffic to the backend uses ProxyErrorOverride to host custom error pages on Apache httpd side, when the backend replies with a 50x error code mod_proxy/mod_cluster marks that worker as down, breaking session stickiness. This behaviour is quite similar to have failonstatus=500 for example

Version-Release number of selected component (if applicable):

Apache httpd 2.2.26 from JBoss EAP and mod_cluster 1.2.11.Final

How reproducible:

Always

Steps to Reproduce:
1. Configure a VirtualHost with ProxyPass / balancer://balancername/
2. Add ProxyErrorOverride On
3. Add at least ErrorDocument 500 /error500.html
4. Access the backend normally and the trigger a 500 error

Actual results:

Worker is marked as down and connection is forwarded to another worker, breaking session stickiness. Client receives custom 500 error page as expected.

Expected results:

Second request not being forwarded to a different worker
Comment 3 George Zaronikas 2016-07-17 14:58:32 EDT
Backported upstream patch https://svn.apache.org/viewvc?view=revision&revision=1683112 in order to resolve the issue
Comment 5 Michal Karm Babacek 2016-08-10 19:50:23 EDT
Apparently, single HTTP 500 error code coming from a one worker doesn't break session stickiness:

>hudson@rhel7GAx86-64:~$ curl 'http://192.168.122.172:8746/clusterbench/httpcode/?http_code=200' -c cookie.txt -b cookie.txt
>Done. 
>HTTP Code was: 200
>JVM route: tomcat-7-2
>Session ID: 65F8C139571EF218315BAD6BD94E8D18.tomcat-7-2
>Session isNew: false
>
>hudson@rhel7GAx86-64:~$ curl 'http://192.168.122.172:8746/clusterbench/httpcode/?http_code=200' -c cookie.txt -b cookie.txt
>Done. 
>HTTP Code was: 200
>JVM route: tomcat-7-2
>Session ID: 65F8C139571EF218315BAD6BD94E8D18.tomcat-7-2
>Session isNew: false
>
>hudson@rhel7GAx86-64:~$ curl 'http://192.168.122.172:8746/clusterbench/httpcode/?http_code=500' -c cookie.txt -b cookie.txt
>My Custom 500 page.
>
>hudson@rhel7GAx86-64:~$ curl 'http://192.168.122.172:8746/clusterbench/httpcode/?http_code=200' -c cookie.txt -b cookie.txt
>Done. 
>HTTP Code was: 200
>JVM route: tomcat-7-2
>Session ID: 65F8C139571EF218315BAD6BD94E8D18.tomcat-7-2
>Session isNew: false
>
>hudson@rhel7GAx86-64:~$ curl 'http://192.168.122.172:8746/clusterbench/httpcode/?http_code=200' -c cookie.txt -b cookie.txt
>Done. 
>HTTP Code was: 200
>JVM route: tomcat-7-2
>Session ID: 65F8C139571EF218315BAD6BD94E8D18.tomcat-7-2
>Session isNew: false

Note You need to log in before you can comment on or make changes to this bug.