On 10/10/2015 12:31 AM, Willy Tarreau wrote: > Is the response closed when this happens (eg: server crash) ? If so, > we could add some sample fetches to detect that the request or response > channels are closed in case that could help. This is trivial to do, but > it will only be reliable if the close is immediately encountered, so it > still depends on the timing.
We don't really understand why it happens, though we have been able to track down an exception that we *think* is related. It's a common problem seen with servlet containers: "java.lang.IllegalStateException: Cannot forward after response has been committed" and "java.lang.IllegalStateException: Cannot call sendError() after the response has been committed". The underlying cause virtually every time these exceptions occur is programmer error. The difficult part is tracking it down and getting a fix deployed. We've been looking through our own code and have not turned up any problem. There is a lot of information out there to suggest that the "white page of death" is a bug in Liferay, fixed in the newest version. We're working on the upgrade in our development environment, but it's slow going. It will take time to work out the procedure, validate it in staging, and then deploy to production. Because the upgrade is a slow process and we aren't even sure it will help, the idea of working around the problem with haproxy came up. It sounds like it would be difficult (or impossible) to detect when a "try it again" action would be safe to do. Thanks, Shawn