Expand my Community achievements bar.

ACS AEM Commons Error Page Handler

Avatar

Level 4

Hi All,

I have configured ACS error page handler with my 6.2 application. I have attached the config snapshot . The 404 behavior works fine but  i am struggling to get the 500 error work.

After checking the error.log file I can see the following error. -- org.apache.sling.engine.impl.DefaultErrorHandler handleError: Response already committed; cannot send error 500java.lang.Error: Unresolved compilation problems:

 

The complete stack trace is below

Caused by: org.apache.sling.api.scripting.ScriptEvaluationException: An exception occurred processing JSP page /apps/acs-commons/components/utilities/errorpagehandler/default.jsp at line 47
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:416)
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.eval(DefaultSlingScript.java:184)
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.service(DefaultSlingScript.java:4 91)
    at org.apache.sling.servlets.resolver.internal.SlingServletResolver.handleError(SlingServlet Resolver.java:765)
    ... 51 common frames omitted
Caused by: org.apache.sling.api.SlingException: An exception occurred processing JSP page /apps/acs-commons/components/utilities/errorpagehandler/default.jsp at line 47
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspExceptionInterna l(JspServletWrapper.java:683)
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspException(JspSer vletWrapper.java:608)
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper .java:529)
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper .java:449)
    at org.apache.sling.scripting.jsp.JspScriptEngineFactory.callJsp(JspScriptEngineFactory.java :284)
    at org.apache.sling.scripting.jsp.JspScriptEngineFactory.access$100(JspScriptEngineFactory.j ava:102)
    at org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval(JspScriptEngin eFactory.java:536)
    at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:388)
    ... 54 common frames omitted
Caused by: java.lang.IllegalStateException: Committed
    at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1243)
    at org.eclipse.jetty.server.Response.resetForForward(Response.java:1235)
    at org.eclipse.jetty.server.Response.reset(Response.java:1181)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at javax.servlet.ServletResponseWrapper.reset(ServletResponseWrapper.java:186)
    at com.adobe.acs.commons.errorpagehandler.impl.ErrorPageHandlerImpl.resetRequestAndResponse( ErrorPageHandlerImpl.java:764)
    at org.apache.jsp.apps.sling.servlet.errorhandler.default_jsp._jspService(default_jsp.java:3 30)
    at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper .java:502)
    ... 59 common frames omitted
19.12.2016 20:47:47.352 *ERROR* [0:0:0:0:0:0:0:1 [1482160667209] GET /content/mecommerce/americas/US/en/signup/password.html HTTP/1.1] org.apache.sling.engine.impl.DefaultErrorHandler handleError: Response already committed; cannot send error 500java.lang.Error: Unresolved compilation problems: 

 

At line 47 of default.jsp has the following code

errorPageHandlerService.resetRequestAndResponse(slingRequest, slingResponse, status);

Adding code for errorPageHandlerService.resetRequestAndResponse

    

/** * Reset response attributes to support printing out a new page (rather than one that potentially errored out). * This includes clearing clientlib inclusion state, and resetting the response. * <p> * If the response is committed, and it hasnt been closed by code, check the response AND jsp buffer sizes and * ensure they are large enough to NOT force a buffer flush. * * @param request * @param response * @param statusCode */ public void resetRequestAndResponse(SlingHttpServletRequest request, SlingHttpServletResponse response, int statusCode) { // Clear client libraries // Replace with proper API call is HtmlLibraryManager provides one in the future; // Currently this is our only option. request.setAttribute("com.day.cq.widget.HtmlLibraryManager.included", new HashSet<String>()); // Fixes AEM 6.2 issue (https://github.com/Adobe-Consulting-Services/acs-aem-commons/issues/790) request.setAttribute("com.adobe.granite.ui.clientlibs.HtmlLibraryManager.included", new HashSet<String>()); // Clear the response response.reset(); response.setContentType("text/html"); response.setStatus(statusCode); }

Can you please help me if there is any configuration that needs to be done for AEM 6.2 ?

2 Replies

Avatar

Level 4

Yes, I posted the question there as well. So David's answer did solve my issue. Increasing the Response buffer size in Apache Felix Jetty Based HTTP Service to 49152 fixed it.

 

However there's a catch, if i again revert my value to the default 24576 value, i am not able to replicate the error i observed in the first place.