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

Slow review page caused by ReviewBaseAction.getFrxNavList

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 3.9.1
    • None
    • None
    • None

    Description

      When review page is rendered it prepares a model of all files and files revisions by calling ReviewBaseAction.getFrxNavList which is visible on sequence of thread dumps:

      "qtp943573036-605" #605 prio=5 os_prio=64 tid=0x00000000038b6000 nid=0x25f runnable [0xffff80feddff4000]
         java.lang.Thread.State: RUNNABLE
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
      	at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:485)
      	at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:243)
      	at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:3834)
      	at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:193)
      	at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:147)
      	at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
      	at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
      	at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:58)
      	at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:1175)
      	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1251)
      	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
      	at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:859)
      	at com.cenqua.crucible.revision.managers.CrucibleRevisionCreator.findStoredPath(CrucibleRevisionCreator.java:70)
      	at com.cenqua.crucible.revision.managers.CrucibleRevisionCreator.findRevision(CrucibleRevisionCreator.java:121)
      	at com.cenqua.crucible.model.managers.FileRevisionManager.findRevision(FileRevisionManager.java:142)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager$3.doInTransaction(DefaultContentManager.java:435)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager$3.doInTransaction(DefaultContentManager.java:432)
      	at com.atlassian.fisheye.spi.impl.DefaultTxTemplate.execute(DefaultTxTemplate.java:78)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager.getCrucibleRevision(DefaultContentManager.java:432)
      	at com.cenqua.crucible.revision.source.PatchSource.getRevisionAnchor(PatchSource.java:320)
      	at com.cenqua.crucible.view.FRXDO.getAnchoredRevision(FRXDO.java:523)
      	at com.cenqua.crucible.view.FRXDO.isAnchorFailure(FRXDO.java:508)
      	at com.cenqua.crucible.view.FRXDO.isSliderFixedMinimum(FRXDO.java:214)
      	at com.cenqua.crucible.view.FRXDO.<init>(FRXDO.java:184)
      	at com.cenqua.crucible.revision.managers.DefaultContentManager.makeFRXDO(DefaultContentManager.java:125)
      	at com.atlassian.crucible.actions.ReviewBaseAction.makeFRXDO(ReviewBaseAction.java:600)
      	at com.atlassian.crucible.actions.ReviewBaseAction$FRXWrapper.wrap(ReviewBaseAction.java:309)
      	at com.atlassian.crucible.actions.ReviewBaseAction$FRXWrapper.wrap(ReviewBaseAction.java:301)
      	at com.cenqua.crucible.util.WrappingIterator.wrap(WrappingIterator.java:26)
      	at com.cenqua.crucible.util.WrappingIterator.next(WrappingIterator.java:35)
      	at com.cenqua.crucible.view.FRXNavList.<init>(FRXNavList.java:174)
      	at com.atlassian.crucible.actions.ReviewBaseAction.getFrxNavList(ReviewBaseAction.java:343)
      	at com.atlassian.crucible.actions.ReviewBaseAction.getSortedFrxs(ReviewBaseAction.java:336)
      	at com.atlassian.crucible.actions.ReviewBaseAction.getEmptyFRXs(ReviewBaseAction.java:320)
      	at sun.reflect.GeneratedMethodAccessor1374.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:497)
      	at javax.el.BeanELResolver.getValue(BeanELResolver.java:305)
      	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:188)
      	at com.sun.el.parser.AstValue.getValue(AstValue.java:120)
      	at com.sun.el.parser.AstValue.getValue(AstValue.java:167)
      	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
      	at org.apache.jasper.runtime.PageContextImpl.evaluateExpression(PageContextImpl.java:1009)
      	at org.apache.jsp.tag.web.review.reviewPage_tag.doTag(reviewPage_tag.java:678)
      	at org.apache.jsp.WEB_002dINF.jsp.crucible.review.monolithic.review_jsp._jspx_meth_rev_reviewPage_0(review_jsp.java:182)
      	at org.apache.jsp.WEB_002dINF.jsp.crucible.review.monolithic.review_jsp._jspService(review_jsp.java:157)
      	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      

      Having many files in review and having Hibernate checks on each list() and transaction commit leads to a huge processing time.

      It may to be related to pre-commit reviews as isAnchorFailure() is always visible on stacks.

      Attachments

        Issue Links

          Activity

            People

              czawadka@atlassian.com Cezary Zawadka
              czawadka@atlassian.com Cezary Zawadka
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - Not Specified
                  Not Specified
                  Logged:
                  Time Spent - 11m
                  11m