Uploaded image for project: 'Crucible'
  1. Crucible
  2. CRUC-6593

High CPU load on review page

XMLWordPrintable

    • 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

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

                Created:
                Updated: