Uploaded image for project: 'Bamboo Data Center'
  1. Bamboo Data Center
  2. BAM-20604

Build dashboard page slow for non admin users

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Low
    • 9.0.0
    • 6.8.0
    • User Interface
    • None

    Description

      Issue Summary

      Bamboo pages such as the Build dashboard (allPlans.action), Build activity (currentActivity.action) and My Bamboo (myBamboo.action) are very slow to open for uses that don't have the Admin permission inside the Bamboo administration > Overview > Security > Global permissions page.

      Steps to Reproduce

      Note 1

      It's important to note that this usually only affects large deployments of Bamboo (e.g. Bamboo instances with thousands or dozens of thousands of plans). If this is not your case you're likely affected by some other issue and should consider contacting Atlassian Support to have it verified.

      Note 2

      The most common symptom of this issue is that the act of logging in to Bamboo is very slow for regular (non-admin) users. It is important to note that in most cases it is not the authentication process itself that is slow but loading the Build dashboard (allPlans.action) which is the page users get redirected to by default when logging in. A good way to verify whether you're affected by the problem is to ask the user to attempt to log in and immediately after that try to access another page inside Bamboo, such as the Projects (allProjects.action) page. If this pages loads up quickly that's a good indication that it is the Build dashboard (allPlans.action) that is slow and not the authentication process.

      1. As a regular (non-admin) user log in to Bamboo. This in itself (as explained in Note 2) will be slow already.
      2. Once the Build dashboard (allPlans.action) comes up try to visit the Build activity (currentActivity.action) or My Bamboo (myBamboo.action) pages.

      Expected Results

      • Pages mentioned in this report are loading fairly quickly (e.g. just a couple of seconds).

      Actual Results

      • Pages are very slow to open. This is happening because Bamboo is attempting to run permission checks for all of your plans before it can display the ones that the user trying to load the page has access to. It's hard to be precise as the time will vary depending on the amount of plans we have to run permission checks for but we have seen loading times ranging from 25 seconds all the way up to minutes.
      • you will see the below stack trace in your thread dumps stuck on the StarterAction.getPlansWithCheckProjectPermissionFirst method
        at java.util.ArrayList.remove(ArrayList.java:532)
        	at org.acegisecurity.afterinvocation.CollectionFilterer.getFilteredObject(CollectionFilterer.java:76)
        	at org.acegisecurity.afterinvocation.AclEntryAfterInvocationCollectionFilteringProvider.decide(AclEntryAfterInvocationCollectionFilteringProvider.java:127)
        	at org.acegisecurity.afterinvocation.AfterInvocationProviderManager.decide(AfterInvocationProviderManager.java:74)
        	at org.acegisecurity.intercept.AbstractSecurityInterceptor.afterInvocation(AbstractSecurityInterceptor.java:179)
        	at org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:68)
        	at com.atlassian.bamboo.security.acegi.intercept.aopalliance.AuthorityOverrideMethodSecurityInterceptor.invoke(AuthorityOverrideMethodSecurityInterceptor.java:28)
        	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        	at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
        	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
        	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
        	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
        	at com.sun.proxy.$Proxy164.getPlans(Unknown Source)
        	at com.atlassian.bamboo.webwork.StarterAction.getPlansWithCheckProjectPermissionFirst(StarterAction.java:610)
        	at com.atlassian.bamboo.webwork.StarterAction.getChains(StarterAction.java:259)
        	at com.atlassian.bamboo.webwork.StarterAction.getFavouriteBuilds(StarterAction.java:409) 

      Workaround

      At the moment there's only one workaround available:

      1. Ask the affected users to open the Build dashboard (allPlans.action).
      2. Once it finishes loading click the 'pencil' icon right next to the Personal filter is on/off button.
      3. Select the option Show only favourite plans.
      4. Click the "Save and apply" button.

      From this moment on the user will have to favourite the plans they want to see in the dashboard (otherwise it will be empty). Bamboo will stop running permission checks across all of your plans every time the user tries to load the Build dashboard (allPlans.action) or Build activity (currentActivity.action) pages. This should have a positive impact in the loading times for the pages mentioned in this report.

      Attachments

        Activity

          People

            mgardias Marcin Gardias
            sorlovski Zaro
            Votes:
            23 Vote for this issue
            Watchers:
            17 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: