Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-81037

Clicking inline tasks on large pages slowly fills the heap over time

      Atlassian Update - 4th June 2024

      Hi Everyone,

      Thank you for your patience with this issue as we are still working on a complete solution.

      During our development, we were are able to pre-emptively release some optimisations which should help reduce the impact. This should greatly improve processing efficiency when checking many tasks on the same page.

      These optimisations have been released in version 8.5.10

      Thanks!

      Issue Summary

      While in page view mode, each inline task interaction increments the page version by one. Whilst this is not a problem in itself, when a checkbox (for inline tasks) is marked or unmarked on a Confluence page, hibernate loads the page contents twice into two string objects.

      With regular usage, inline tasks will eventually cause heap pressure, resulting in potentially disruptive full-GC pauses.

      Note: If your Confluence heap is filling and full-GC and/or OOME'ing within an hour of startup, it is not this bug.

      This is reproducible on Data Center: yes

      Steps to Reproduce

      1. Create a relatively large Confluence page with inline tasks included on it.
      2. Whilst viewing the page (not editing), check and uncheck boxes for inline tasks. Programmatically, CHECKED and UNCHECKED states can be issued for a page (and taskid) via the REST API to simulate user activity automatically:
        curl -D- -u user2:user2 -X POST -H "X-Atlassian-Token: nocheck" --data '{"status":"CHECKED","trigger":"VIEW_PAGE"}' -H "Content-Type: application/json" http://localhost:8090/rest/inlinetasks/1/task/2228225/55/ 
      3. Whilst monitoring heap activity (via GC logs or JMX), note the heap usage increasing with each click. The larger the page, the bigger the heap usage increase per click.  Eventually this triggers full GC and heap usage remains high.

      Expected Results

      Referenced objects in the heap should not grow unbounded from the use of inline tasks.

      Actual Results

      |

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available

            [CONFSERVER-81037] Clicking inline tasks on large pages slowly fills the heap over time

            Malcolm Ninnes made changes -
            Description Original: {panel:title=Atlassian Update - 4th June 2024|borderStyle=solid|borderColor=#6554c0|titleBGColor=#6554c0|bgColor=#eae6ff|titleColor=#ffffff}
            Hi Everyone,

            Thank you for your patience with this issue as we are still working on a complete solution.

            During our development, we were are able to pre-emptively release some optimisations which should help reduce the impact. This should greatly improve processing efficiency when checking many tasks on the same page.

            These optimisations have been released in version 8.5.10

            Thanks!
            {panel}

            h3. Issue Summary

            While in page view mode, each inline task interaction increments the page version by one. Whilst this is not a problem in itself, when a checkbox (for inline tasks) is marked or unmarked on a Confluence page, hibernate loads the page contents twice into two string objects.

            With regular usage, inline tasks will eventually cause heap pressure, resulting in potentially disruptive full-GC pauses.

            This is reproducible on Data Center: yes
            h3. Steps to Reproduce
            # Create a relatively large Confluence page with inline tasks included on it.
            # Whilst +viewing+ the page (not editing), check and uncheck boxes for inline tasks. Programmatically, CHECKED and UNCHECKED states can be issued for a page (and taskid) via the REST API to simulate user activity automatically:
            {code:java}
            curl -D- -u user2:user2 -X POST -H "X-Atlassian-Token: nocheck" --data '{"status":"CHECKED","trigger":"VIEW_PAGE"}' -H "Content-Type: application/json" http://localhost:8090/rest/inlinetasks/1/task/2228225/55/ {code}
            # Whilst monitoring heap activity (via GC logs or JMX), note the heap usage increasing with each click. The larger the page, the bigger the heap usage increase per click.  Eventually this triggers full GC and heap usage remains high.

            h3. Expected Results

            Referenced objects in the heap should not grow unbounded from the use of inline tasks.
            h3. Actual Results

            !Conf7192-heap-fullgc.png|thumbnail!|

            h3. Workaround


            Currently there is no known workaround for this behavior. A workaround will be added here when available
            New: {panel:title=Atlassian Update - 4th June 2024|borderStyle=solid|borderColor=#6554c0|titleBGColor=#6554c0|bgColor=#eae6ff|titleColor=#ffffff}
            Hi Everyone,

            Thank you for your patience with this issue as we are still working on a complete solution.

            During our development, we were are able to pre-emptively release some optimisations which should help reduce the impact. This should greatly improve processing efficiency when checking many tasks on the same page.

            These optimisations have been released in version 8.5.10

            Thanks!
            {panel}

            h3. Issue Summary

            While in page view mode, each inline task interaction increments the page version by one. Whilst this is not a problem in itself, when a checkbox (for inline tasks) is marked or unmarked on a Confluence page, hibernate loads the page contents twice into two string objects.

            With regular usage, inline tasks will +eventually+ cause heap pressure, resulting in potentially disruptive full-GC pauses.

            +Note+: If your Confluence heap is filling and full-GC and/or OOME'ing within an hour of startup, it is *not* this bug.

            This is reproducible on Data Center: yes
            h3. Steps to Reproduce
            # Create a relatively large Confluence page with inline tasks included on it.
            # Whilst +viewing+ the page (not editing), check and uncheck boxes for inline tasks. Programmatically, CHECKED and UNCHECKED states can be issued for a page (and taskid) via the REST API to simulate user activity automatically:
            {code:java}
            curl -D- -u user2:user2 -X POST -H "X-Atlassian-Token: nocheck" --data '{"status":"CHECKED","trigger":"VIEW_PAGE"}' -H "Content-Type: application/json" http://localhost:8090/rest/inlinetasks/1/task/2228225/55/ {code}
            # Whilst monitoring heap activity (via GC logs or JMX), note the heap usage increasing with each click. The larger the page, the bigger the heap usage increase per click.  Eventually this triggers full GC and heap usage remains high.

            h3. Expected Results

            Referenced objects in the heap should not grow unbounded from the use of inline tasks.
            h3. Actual Results

            !Conf7192-heap-fullgc.png|thumbnail!|

            h3. Workaround


            Currently there is no known workaround for this behavior. A workaround will be added here when available
            George Varghese made changes -
            Labels New: whl-fy25q4-additional-p2
            SET Analytics Bot made changes -
            UIS Original: 3 New: 6
            SET Analytics Bot made changes -
            Support reference count Original: 15 New: 16
            SET Analytics Bot made changes -
            Support reference count Original: 14 New: 15
            SET Analytics Bot made changes -
            UIS Original: 6 New: 3
            SET Analytics Bot made changes -
            UIS Original: 7 New: 6
            SET Analytics Bot made changes -
            UIS Original: 6 New: 7
            SET Analytics Bot made changes -
            UIS Original: 7 New: 6
            SET Analytics Bot made changes -
            UIS Original: 6 New: 7

              Unassigned Unassigned
              mninnes@atlassian.com Malcolm Ninnes
              Affected customers:
              21 This affects my team
              Watchers:
              35 Start watching this issue

                Created:
                Updated: