-
Suggestion
-
Resolution: Unresolved
-
None
-
69
-
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)
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