[richfaces-issues] [JBoss JIRA] Updated: (RF-7248) a4j creates infinite HashMap.get loop

Koray Gecici (JIRA) jira-events at lists.jboss.org
Wed Dec 29 08:26:18 EST 2010


     [ https://issues.jboss.org/browse/RF-7248?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Koray Gecici updated RF-7248:
-----------------------------

    Attachment: infinite_loop.JPG


We are facing this issue at production. The result of bug is %100 CPU consumption. So we have to stop / start out web application :(

We detected problem using Visual VM and JConsole tools. The Visual VM screenshot is attached. Thread stack trace is below:

Name: http-81-46
State: RUNNABLE
Total blocked: 1,314  Total waited: 327

Stack trace: 
java.util.HashMap.get(HashMap.java:303)
org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:965)
org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:984)
org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:943)
org.ajax4jsf.component.UIDataAdaptor.setRowKey(UIDataAdaptor.java:361)
org.richfaces.renderkit.AbstractRowsRenderer.process(AbstractRowsRenderer.java:82)
org.richfaces.model.ModifiableModel.walk(ModifiableModel.java:156)
org.ajax4jsf.component.UIDataAdaptor.walk(UIDataAdaptor.java:1133)
org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:104)
org.richfaces.renderkit.AbstractRowsRenderer.encodeRows(AbstractRowsRenderer.java:88)
org.richfaces.renderkit.AbstractTableRenderer.encodeTBody(AbstractTableRenderer.java:90)
org.richfaces.renderkit.AbstractTableRenderer.encodeChildren(AbstractTableRenderer.java:97)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:166)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxChildren(AjaxChildrenRenderer.java:83)
org.ajax4jsf.renderkit.AjaxChildrenRenderer.encodeAjaxComponent(AjaxChildrenRenderer.java:157)
org.ajax4jsf.renderkit.AjaxContainerRenderer.encodeAjax(AjaxContainerRenderer.java:123)
org.ajax4jsf.component.UIAjaxRegion.encodeAjax(UIAjaxRegion.java:263)
org.ajax4jsf.component.AjaxViewRoot$4.invokeContextCallback(AjaxViewRoot.java:492)
javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:711)
javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)
javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:720)
javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:675)
org.ajax4jsf.component.AjaxViewRoot.encodeChildren(AjaxViewRoot.java:546)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
tr.com.provus.common.jsf.postback.PostbackViewHandler.renderView(PostbackViewHandler.java:101)
tr.com.provus.common.jsf.view.handler.DynamicViewHandler.renderView(DynamicViewHandler.java:81)
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
tr.com.provus.common.jsf.servlet.DelegateFacesServlet.service(DelegateFacesServlet.java:268)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:246)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)



> a4j creates infinite HashMap.get loop
> -------------------------------------
>
>                 Key: RF-7248
>                 URL: https://issues.jboss.org/browse/RF-7248
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-tables
>    Affects Versions: 3.3.0, 3.3.3.Final
>            Reporter: Nida Cibulskyte
>            Assignee: Nick Belaevski
>              Labels: ENT
>             Fix For: 3.3.4.BETA1, ENT_3.3.1.SP2
>
>         Attachments: infinite_loop.JPG, screenshot-1.jpg
>
>
> Concurrent requests on a4j components causes infinite loop. While one request is being proccessed by restoreChildState method, another request is senT for proccessing. It causes the code to get stuck in hashmap.get() as the hashmap is not synchronized and causes infinite loop.
> 2009 05 25 09:41:43 ERROR demo.NameBean  - java.util.HashMap.get(HashMap.java:303)
> 2009 05 25 09:41:43 ERROR demo.NameBean  - org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:965)
> 2009 05 25 09:41:43 ERROR demo.NameBean  - org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:982)
> 2009 05 25 09:41:43 ERROR demo.NameBean  - org.ajax4jsf.component.UIDataAdaptor.restoreChildState(UIDataAdaptor.java:982)
> .......................

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the richfaces-issues mailing list