ICEfaces
  1. ICEfaces
  2. ICE-9403

DateTimeEntry, interacted with, then client side cleanup, not clearing widgetVar

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA
    • Fix Version/s: EE-3.3.0.GA_P01, 4.0.BETA, 4.0
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ACE DateTimeEntry, memoryLeak QA test app
    • Assignee Priority:
      P1

      Description

      When using client side cleanup, when an ace:dateTimeEntry component has been rendered, and then interacted with by clicking on the calendar popup button and then the popup dismissed, and the component is then unrendered, then the widgetVar is not cleaned up, and you can use the Chrome console to see that it [window.widget...] references a live object. When using server side cleanup, that reference is null.

      With client side update:
      - When DateTimeEntry not interacting with, there is code on init to null out widgetVar. onElementUpdate is not called.
      - After interacting with DateTimeEntry, when component unrendered, onElementUpdate called, but that call doesn't null out the widgetVar.

      With server side update:
      - When DateTimeEntry not interacting with, there is code on init to null out widgetVar. onElementUpdate is not called.
      - After interacting with DateTimeEntry, when component unrendered, the onElementUpdate function that calls widget.destroy() is called on the interacted DateTimeEntry, and the onElementUpdate function that does not call widget.destroy() is called on the uninteracted component.


      The both the interacted and uninteracted with DateTimeEntry components are leaking, both with client side and server side cleanup, so we may have a general leak beyond widgetVar, which means that ICE-9291 might not be resolved. We'll need to fix widgetVar first, and re-run the leak tests. Here is the current data from the memoryLeak app using the EE 3.3 release (Build 27):

      server side cleanup:
      - Showing tabSet with tabPane of text fields was 4.6 MB heap. Closing that tabPane gave heap of 5.0 MB with none of text fields detached. Just tabSet nav detached.
      - Showing tabSet with tabPane of dateTimeEntry was 7.5 MB heap. No interactions. Closing that tabPane gave heap of 5.4 MB with 4003 entries and 60 KB DateTimeEntry detached, plus tabSet nav detached.
      - Showing tabSet with tabPane of dateTimeEntry was 7.9 MB heap. Clicked 16 popup icons and Done buttons. Closing that tabPane gave heap of 6.4 MB with 4003 entries and 60 KB DateTimeEntry detached, plus tabSet nav detached. Interacted and removed DateTimeEntry widgetVar are null.

      client side cleanup:
      - Showing tabSet with tabPane of text fields was 5.2 MB heap. Closing that tabPane gave heap of 5.3 MB with none of text fields detached. Just tabSet nav detached.
      - Showing tabSet with tabPane of dateTimeEntry was 7.8 MB heap. No interactions. Closing that tabPane gave heap of 8.1 MB with 6003 entries and 60 KB DateTimeEntry detached, plus tabSet nav detached. ViewHead update. DateTimeEntry, with client side cleanup, seems to leak more than server side cleanup, when removed.
      - Showing tabSet with tabPane of dateTimeEntry was 8.2 MB heap. Clicked 16 popup icons and Done buttons. Closing that tabPane gave heap of 9.1 MB with 6003 entries and 60 KB DateTimeEntry detached, plus tabSet nav detached. ViewHead update. Interacted and removed DateTimeEntry widgetVar are live objects.

        Activity

        Hide
        yip.ng added a comment -

        widgetVar nulled out and deleted in both onElementUpdate cases. No more empty widgetVar's or detached DOM entries.

        M: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\resources\icefaces.ace\datetimeentry\datetimeentry.js#36689
        M: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\src\org\icefaces\ace\component\datetimeentry\DateTimeEntryRenderer.java#36689

        M: http:\\10.18.39.25:8888\svn\ossrepo\icefaces-ee\tags\icefaces-ee-3.3.0.GA_P01\icefaces\ace\component\resources\icefaces.ace\datetimeentry\datetimeentry.js#36692
        M: http:\\10.18.39.25:8888\svn\ossrepo\icefaces-ee\tags\icefaces-ee-3.3.0.GA_P01\icefaces\ace\component\src\org\icefaces\ace\component\datetimeentry\DateTimeEntryRenderer.java#36692

        Show
        yip.ng added a comment - widgetVar nulled out and deleted in both onElementUpdate cases. No more empty widgetVar's or detached DOM entries. M: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\resources\icefaces.ace\datetimeentry\datetimeentry.js#36689 M: C:\svn\ossrepo\icefaces3\trunk\icefaces\ace\component\src\org\icefaces\ace\component\datetimeentry\DateTimeEntryRenderer.java#36689 M: http:\\10.18.39.25:8888\svn\ossrepo\icefaces-ee\tags\icefaces-ee-3.3.0.GA_P01\icefaces\ace\component\resources\icefaces.ace\datetimeentry\datetimeentry.js#36692 M: http:\\10.18.39.25:8888\svn\ossrepo\icefaces-ee\tags\icefaces-ee-3.3.0.GA_P01\icefaces\ace\component\src\org\icefaces\ace\component\datetimeentry\DateTimeEntryRenderer.java#36692

          People

          • Assignee:
            yip.ng
            Reporter:
            Mark Collette
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: