• 69
    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

      Review pages can cause high CPU load. From one client's debugs logs we see that over 13 seconds were spent in rendering review page:

      • ~7-8 seconds spent in preparing data for rendering including 2 calls to FRXDO.mapInlineComments() (2.5 secs each)
      • ~3 seconds spent in lines rendering (~500 diff regions)
      • ~3 seconds spent in comment rendering (~20 comments)

      At least 1 superfluous FRXDO.mapInlineComments() call can be avoided

      Example stacktrace:

      "btpool0-9732" prio=10 tid=0x00007fbe198d3800 nid=0xb74 runnable [0x00007fbdf34ef000]
         java.lang.Thread.State: RUNNABLE
      	at com.cenqua.fisheye.diff.MyersOND.buildPath(MyersOND.java:123)
      	at com.cenqua.fisheye.diff.MyersOND.diff(MyersOND.java:82)
      	at com.cenqua.fisheye.diff.Diff.diff(Diff.java:8)
      	at com.cenqua.fisheye.diff.DiffHelper.getHunkList(DiffHelper.java:26)
      	at com.cenqua.fisheye.diff.DiffHelper.getHunkList(DiffHelper.java:139)
      	at com.cenqua.crucible.revision.source.Source.getHunkList(Source.java:225)
      	at com.cenqua.crucible.view.FRXDO.getHunkList(FRXDO.java:1273)
      	at com.cenqua.crucible.view.FRXDO.getTetrisGrid(FRXDO.java:744)
      	at com.cenqua.crucible.view.FRXDO.mapInlineComments(FRXDO.java:772)
      	at com.cenqua.crucible.view.FRXDO.<init>(FRXDO.java:201)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager.makeFRXDO(DefaultContentManager.java:107)
      	at com.atlassian.crucible.actions.ReviewBaseAction.makeFRXDO(ReviewBaseAction.java:596)
      	at com.atlassian.crucible.actions.ViewFRXAction.execute(ViewFRXAction.java:184)
      

      2nd example stacktrace:

      "btpool0-407" prio=10 tid=0x00002aafc873f000 nid=0x1aac runnable [0x0000000049ba8000]
         java.lang.Thread.State: RUNNABLE
      	at java.io.RandomAccessFile.length(Native Method)
      	at com.cenqua.fisheye.io.BufferedRandomAccessInputStream.length(BufferedRandomAccessInputStream.java:213)
      	at com.cenqua.fisheye.io.Utf16ERandomAccessIoStream.length(Utf16ERandomAccessIoStream.java:32)
      	at com.cenqua.fisheye.io.BufferedCharSequence.<init>(BufferedCharSequence.java:25)
      	at com.cenqua.fisheye.io.BufferedCharSequence.subSequence(BufferedCharSequence.java:52)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.getCharSequence(RegionListDiffSequences.java:75)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.equalImpl(RegionListDiffSequences.java:69)
      	at com.cenqua.fisheye.diff.RegionListDiffSequences.equal(RegionListDiffSequences.java:59)
      	at com.cenqua.fisheye.diff.MyersOND.buildPath(MyersOND.java:123)
      	at com.cenqua.fisheye.diff.MyersOND.diff(MyersOND.java:82)
      	at com.cenqua.fisheye.diff.Diff.diff(Diff.java:8)
      	at com.cenqua.fisheye.diff.EDiff.doDiff(EDiff.java:65)
      	at com.cenqua.fisheye.diff.view.DiffPrinter.setupEdiff(DiffPrinter.java:266)
      	at com.cenqua.fisheye.diff.view.DiffPrinter.access$100(DiffPrinter.java:28)
      	at com.cenqua.fisheye.diff.view.DiffPrinter$1.next(DiffPrinter.java:174)
      	at com.cenqua.fisheye.diff.view.DiffPrinter$1.next(DiffPrinter.java:151)
      	at com.cenqua.crucible.view.DiffDO.mapCommentsToDiff(DiffDO.java:38)
      	at com.cenqua.crucible.view.FRXDO.getLines(FRXDO.java:1245)
      	at com.cenqua.crucible.view.FRXDO.isNoChange(FRXDO.java:1216)
      

        1. frx.log
          932 kB
        2. nps-method-time.png
          nps-method-time.png
          399 kB
        3. zipfile.svn.zip
          181 kB

            [CRUC-6593] High CPU load on review page

            Atlassian Update – 19 May 2020

            Hi everyone,

            thank you very much for reporting this suggestion and your involvement in the conversations around it. This suggestion is in the 'Reviewing' state which means it awaits assessment by our team.

            As Fisheye and Crucible have entered basic maintenance mode, our team currently focuses more on bug-fixes and platform updates rather than on feature development. We may still deliver some small improvements if they fit into the maintenance theme. However, suggestions which have been assessed already and are in the Under consideration state have higher priority.

            It means it may take time until we review this suggestion and decide whether to put it on the roadmap or reject it. You can expect an update from us in couple of months. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments.

            Kind regards
            Marek Parfianowicz
            Development Team Lead
            Fisheye/Crucible Team

            Marek Parfianowicz added a comment - Atlassian Update – 19 May 2020 Hi everyone, thank you very much for reporting this suggestion and your involvement in the conversations around it. This suggestion is in the 'Reviewing' state which means it awaits assessment by our team. As Fisheye and Crucible have entered basic maintenance mode , our team currently focuses more on bug-fixes and platform updates rather than on feature development. We may still deliver some small improvements if they fit into the maintenance theme. However, suggestions which have been assessed already and are in the Under consideration state have higher priority. It means it may take time until we review this suggestion and decide whether to put it on the roadmap or reject it. You can expect an update from us in couple of months. Atlassian will continue to watch this issue for further updates, so please feel free to share your thoughts in the comments. Kind regards Marek Parfianowicz Development Team Lead Fisheye/Crucible Team

            On 3.8.0 and 3.8.1, I've had this issue since the 2.X series. This causes us to have serious production outages every few weeks.

            Andy Wallis added a comment - On 3.8.0 and 3.8.1, I've had this issue since the 2.X series. This causes us to have serious production outages every few weeks.

            Don Willis added a comment -

            In 3.6 I've made the FRXDO.mapInlineComments calls faster but haven't removed the duplicate call yet.

            Don Willis added a comment - In 3.6 I've made the FRXDO.mapInlineComments calls faster but haven't removed the duplicate call yet.

            Similar situation can be reproduced with attached zipfile.svn.zip repository, but weights are different for total time of ~11 seconds:

            • ~3 seconds in prepare data
            • ~8 seconds in line rendering
            • 0 seconds in comment rendering

            Full log is attached as frx.log file.

            Cezary Zawadka added a comment - Similar situation can be reproduced with attached zipfile.svn.zip repository, but weights are different for total time of ~11 seconds: ~3 seconds in prepare data ~8 seconds in line rendering 0 seconds in comment rendering Full log is attached as frx.log file.

              Unassigned Unassigned
              czawadka@atlassian.com Cezary Zawadka
              Votes:
              19 Vote for this issue
              Watchers:
              31 Start watching this issue

                Created:
                Updated: