Uploaded image for project: 'Advanced Roadmaps'
  1. Advanced Roadmaps
  2. JPOSERVER-2937

Too much recursion error when loading plans with cyclical dependencies

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 9.0.0
    • 3.14.0, 3.29.2
    • Plan
    • None

    Description

      Issue Summary

      During calculation of the Progress (Issue count) field, ARJ traverses the linked issues to determine the count values as part of the getEstimateFromHistoryIssuesPure() function. This function recursively adds items to an array, using the function addChildIdsToArray().

      With plans that are large and have cyclical dependencies, the browser's stack size can be exceeded, resulting in a blank plan load and an error in the browsers Javascript console

      Steps to Reproduce

      We don't have concrete steps to reproduce at this stage. However, cyclical dependencies, and plans with a large amount of issues are involved.

      The problem has been reported in both Chrome and Firefox browsers.

      Expected Results

      There is no client side crash

      Actual Results

      1. The ARJ Plan shows as blank
      2. One of the following Javascript errors are be found in the Developer Tools -> Console.
         adrum.js:29 RangeError: Maximum call stack size exceeded
            at Array.concat (<anonymous>)
            at com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
            at Array.reduce (<anonymous>)
            at e (com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3)
            at com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
            at Array.reduce (<anonymous>)
            at e (com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3)
            at com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
            at Array.reduce (<anonymous>)
            at e (com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3)
        (anonymous) @ adrum.js:29
        fa @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        n.callback @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        ra @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        na @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        Os @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        ks @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        Ts @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        bs @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        $a @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        enqueueSetState @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42
        x.setState @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:34
        a.onStateChange @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:3
        notify @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:3
        t.notifyNestedSubs @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:3
        a.onStateChange @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:3
        c @ com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
        dispatch @ com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        dispatch @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:3
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        i @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        l @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        a @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        z @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        M @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        b @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        (anonymous) @ adrum.js:29
        Promise.then (async)
        (anonymous) @ adrum.js:29
        L @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        (anonymous) @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        z @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        M @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        b @ com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:14
        (anonymous) @ adrum.js:29
        Show 2 more frames
        adrum.js:29 uncaught at he RangeError: Maximum call stack size exceeded
            at Array.concat (<anonymous>)
            at https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002114
            at Array.reduce (<anonymous>)
            at e (https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002084)
            at https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002121
            at Array.reduce (<anonymous>)
            at e (https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002084)
            at https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002121
            at Array.reduce (<anonymous>)
            at e (https://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002084)
        

        or

        InternalError: too much recursion
            e http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
            e http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
            e http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3
        com.atlassian.jpo:jpo-wr-page-portfolio-frontend-vendor-scripts.js:42:73504
        uncaught at he 
        Error: too much recursion
        e@http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002084
        e/<@http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002121
        e@http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts/com.atlassian.jpo:jpo-wr-page-simple-plans-scripts.js:3:1002084
        e/<@http://mars-jira/s/d41d8cd98f00b204e9800998ecf8427e-CDN/-b0jcto/805007/921277c8a700b5a3f7c06553dc19ac8d/3.13.0/_/download/batch/com.atlassian.jpo:jpo-wr-page…
        

      Workaround

      The KB article on Jira Advanced Roadmaps Plan crashes in blank page after adding Progress column provides queries to help identify the looping issues and fix them.

      1. Try to find any cyclical dependencies in the plan's issue sources, and remediate them. This includes (non-total list):
        1. Any Jira issue that is listed in the "Issue Navigator" with a yellow icon under Parent Link field. This indicates the link is not valid for ARJ's hierarchy
        2. An epic that is linked to an Initiative, that is then linked back to the Epic.
      2. Create a new plan with the same issue sources, and do not add the "Progress (Issue count)" field. Alternatively:
        • If the Progress (Issue Count) field was not saved to a saved view, you may simply clear your browser's Local Storage instead (Dev Tools -> Application -> Local Storage)
        • If the Progress (Issue Count) field was saved to a saved view, then delete the affected view from Manage Views. If you cannot delete it (EG, it's the default), then you may need to create a new plan instead.

       

      Attachments

        Issue Links

          Activity

            People

              230550bfd4eb Maksym Kravtsov (Inactive)
              allewellyn@atlassian.com Alex [Atlassian,PSE]
              Archiver:
              atibrewal@atlassian.com Aakrity Tibrewal

              Dates

                Created:
                Updated:
                Resolved:
                Archived: