-
Bug
-
Resolution: Fixed
-
Low
-
7.1.0, 7.1.1, 7.1.2, 7.1.4, 7.2.4
-
None
-
7.01
-
2
-
Severity 2 - Major
-
1
-
Summary
When browsing to 'All Boards' it's possible the 1min Ajax timeout in JIRA kicks in, preventing the board list from loading. This will result in a timeout as per the attached screenshot.
Problem is caused by slow response to call rest/greenhopper/1.0/rapidviews/viewsData from JIRA, which does resolving project list for each loaded board.
Environment
Reproduced with the following instance size:
- Projects: 1k+
- Boards: 1k+
Steps to Reproduce
- Use a large instance, such as above.
- Access the All boards page
Expected Results
- Viewing Rapid Boards responds in a reasonable time frame (less then 1 minute)
Actual Results
The ajax timeout kicks in and the page times out whilst waiting for rest/greenhopper/1.0/rapidviews/viewsData to return results, or the board can take > 1 minute to load.
Notes
- Regression was introduced in JIRA Software 7.1.0
- RapidViewProjectHelper.getRapidViewProjectList is called for every RapidView query visible on "All boards" page. Underneath this method requests the list of all available projects: getAllProjectsForAction goes through every single project and filters them out by given permissions.
Verification
Generate a thread-dump and following will be present in the stacktrace for long-running threads:
- There should be slow running thread related /rest/greenhopper/1.0/rapidviews/viewsData call
- Class com.atlassian.greenhopper.web.rapid.view.RapidViewListResource.getViewsAndConfigModel will be present in the stacktrace for long-running threads together with com.atlassian.jira.bc.project.DefaultProjectService.getAllProjectsForAction:
"http-nio-80-exec-125" #126716 daemon prio=5 os_prio=0 tid=0x0000000055262000 nid=0x1eac runnable [0x0000000079d6a000] java.lang.Thread.State: RUNNABLE at com.google.common.cache.LocalCache.get(LocalCache.java:3937) at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739) at com.atlassian.cache.memory.DelegatingCache.get(DelegatingCache.java:173) at com.atlassian.cache.memory.DelegatingCache.get(DelegatingCache.java:158) at com.atlassian.jira.security.roles.CachingProjectRoleAndActorStore.getProjectRoleActors(CachingProjectRoleAndActorStore.java:118) at com.atlassian.jira.security.roles.DefaultProjectRoleManager.getProjectRoleActors(DefaultProjectRoleManager.java:107) at com.atlassian.jira.notification.type.ProjectRoleSecurityAndNotificationType.getProjectRoleActors(ProjectRoleSecurityAndNotificationType.java:188) at com.atlassian.jira.notification.type.ProjectRoleSecurityAndNotificationType.hasPermission(ProjectRoleSecurityAndNotificationType.java:141) ... at com.atlassian.jira.bc.project.ProjectAction.hasPermission(ProjectAction.java:60) at com.atlassian.jira.bc.project.DefaultProjectService.checkActionPermission(DefaultProjectService.java:947) at com.atlassian.jira.bc.project.DefaultProjectService$1.apply(DefaultProjectService.java:765) at com.atlassian.jira.bc.project.DefaultProjectService$1.apply(DefaultProjectService.java:762) at com.google.common.collect.Iterators$7.computeNext(Iterators.java:652) at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) at com.google.common.collect.Iterators.addAll(Iterators.java:361) at com.google.common.collect.Lists.newArrayList(Lists.java:160) at com.google.common.collect.Lists.newArrayList(Lists.java:144) at com.atlassian.jira.bc.project.DefaultProjectService.getAllProjectsForAction(DefaultProjectService.java:768) ... at com.atlassian.greenhopper.web.rapid.view.RapidViewProjectHelper.getRapidViewProjectList(RapidViewProjectHelper.java:58) at com.atlassian.greenhopper.web.rapid.view.RapidViewFilterHelper.buildSavedFilterEntry(RapidViewFilterHelper.java:281) at com.atlassian.greenhopper.web.rapid.view.RapidViewListHelper.buildListEntry(RapidViewListHelper.java:215) at com.atlassian.greenhopper.web.rapid.view.RapidViewListHelper.buildListModel(RapidViewListHelper.java:156) at com.atlassian.greenhopper.web.rapid.view.RapidViewListHelper.buildListAndConfigModel(RapidViewListHelper.java:105) ... at com.atlassian.greenhopper.web.rapid.view.RapidViewListResource.getViewsAndConfigModel(RapidViewListResource.java:74) ...
Workaround
You can increase the timeout as mentioned in How to change the default AJAX timeout in JIRA.
- details
-
JSWSERVER-13661 Viewing All Boards slow
- Closed
- relates to
-
JSWSERVER-13632 JIRA Software Manage Boards and viewing boards can timeout due to analysing JQL
- Closed
-
JSWSERVER-5680 As a user, I want to mark certain boards as favorites so I can find them in my list of boards more easily
- Gathering Interest
-
RUM-1118 Loading...
-
RUM-1354 Loading...
- caused by
-
SW-1964 Loading...
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...