ICEfaces
  1. ICEfaces
  2. ICE-10000

ace:dataTable - OutOfMemoryError thrown when reloading lazy dataTable w/ filters

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P02
    • Fix Version/s: EE-3.3.0.GA_P02, 4.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      All

      Description

      An ace:dataTable uses lazy loading and one of the columns is uses filtering. When a filterValue is set on the ace:column, an OutOfMemoryError exception is thrown when reloading the page or navigating away to a new page and back to the page with the data table.

      java.lang.OutOfMemoryError: Java heap space
      at java.util.Arrays.copyOf(Arrays.java:2245)
      at java.util.Arrays.copyOf(Arrays.java:2219)
      at java.util.ArrayList.grow(ArrayList.java:242)
      at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
      at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
      at java.util.ArrayList.add(ArrayList.java:440)
      at org.icefaces.ace.component.datatable.DataTable.processFilters(DataTable.java:1516)
      at org.icefaces.ace.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:116)
      at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:877)
      at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:86)
      at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:70)
      at org.icefaces.ace.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:236)
      at org.icefaces.ace.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:135)
      at org.icefaces.ace.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:73)
      at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:877)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1826)
      at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
      at org.icefaces.impl.renderkit.RendererWrapper.encodeChildren(RendererWrapper.java:49)
      at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822)
      at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822)
      at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:447)
      at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
      at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
      at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

        Activity

        Hide
        Arran Mccullough added a comment -

        Attached test case that shows the issue. The icefaces, icefaces-ace, and icefaces-compat jars from the maintenance branch need to be added into the war file to run.

        Steps:

        • Load welcomeICEfaces.jsf
        • Either refresh the page or use the Goto Page One button and then the Goto Welcome Page button to go back, page will remain unresponsive until the error is displayed.
        Show
        Arran Mccullough added a comment - Attached test case that shows the issue. The icefaces, icefaces-ace, and icefaces-compat jars from the maintenance branch need to be added into the war file to run. Steps: Load welcomeICEfaces.jsf Either refresh the page or use the Goto Page One button and then the Goto Welcome Page button to go back, page will remain unresponsive until the error is displayed.
        Hide
        Arturo Zambrano added a comment -

        Committed fix to 4.0 trunk at revision 40906 and to 3.3 EE branch at revision 40907. Added condition to avoid processing filters when working in lazy mode, since that is done by the user in their implementation of the LazyDataModel.load() method, and we just can't apply our own filtering logic.

        Show
        Arturo Zambrano added a comment - Committed fix to 4.0 trunk at revision 40906 and to 3.3 EE branch at revision 40907. Added condition to avoid processing filters when working in lazy mode, since that is done by the user in their implementation of the LazyDataModel.load() method, and we just can't apply our own filtering logic.
        Hide
        Arturo Zambrano added a comment -

        This issue was present since at least the 3.3 release, and it was present in the 4.0 trunk as well. Adding 4.0 fix version.

        Show
        Arturo Zambrano added a comment - This issue was present since at least the 3.3 release, and it was present in the 4.0 trunk as well. Adding 4.0 fix version.
        Hide
        Carmen Cristurean added a comment -

        Verified with IF4 trunk/ EE-3.3.0-maintenance branch # 40915 in FF28, Chrome 34, IE10.

        Show
        Carmen Cristurean added a comment - Verified with IF4 trunk/ EE-3.3.0-maintenance branch # 40915 in FF28, Chrome 34, IE10.

          People

          • Assignee:
            Arturo Zambrano
            Reporter:
            Arran Mccullough
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: