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

        Arran Mccullough created issue -
        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.
        Arran Mccullough made changes -
        Field Original Value New Value
        Attachment Case12794Example.war [ 17116 ]
        Attachment Case12794Example.zip [ 17117 ]
        Ken Fyten made changes -
        Assignee Arturo Zambrano [ artzambrano ]
        Fix Version/s EE-3.3.0.GA_P02 [ 11371 ]
        Priority Major [ 3 ] Critical [ 2 ]
        Assignee Priority P1 [ 10010 ]
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #40904 Thu May 01 11:08:21 MDT 2014 art.zambrano ICE-10000 added condition to avoid processing filters and sorting criteria when working in lazy mode, since that is done by the user in their implementation of the LazyDataModel.load() method
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTableRenderer.java
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTable.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #40906 Thu May 01 11:25:25 MDT 2014 art.zambrano ICE-10000 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
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTableRenderer.java
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTable.java
        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.
        Arturo Zambrano made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        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.
        Arturo Zambrano made changes -
        Fix Version/s 4.0 [ 11382 ]
        Ken Fyten made changes -
        Summary ace:dataTable - OutOfMemoryError thrown when reloading lazy dataTable ace:dataTable - OutOfMemoryError thrown when reloading lazy dataTable w/ filters
        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.
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

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

            Dates

            • Created:
              Updated:
              Resolved: