-
Bug
-
Resolution: Fixed
-
Low
-
7.2.8, 7.2.12, 7.6.8, 7.12.2
-
7.02
-
14
-
Severity 2 - Major
-
98
-
Summary
REST API call PUT /rest/projects/1.0/project/<PRJ>/lastVisited is used to track last visited project.
While executing the call, method started to load the context thus executing com.atlassian.greenhopper.web.sidebar.BoardScopeFilterContextProviderImpl#getContext which leads to expensive computations (see JSWSERVER-16185).
Due to excessive computation, it puts extra pressure for the permission cache and increases CPU usage, which may lead to degraded performance of the whole Jira instance.
Steps to Reproduce
- Load any issue, Jira will execute PUT /rest/projects/1.0/project/<PRJ>/lastVisited as part of page loading
- Put a break point and collect stack-trace
Expected Results
getContext is not executed
Actual Results
getContext is executed
Notes
Taking into account that /lastVisited is executed for each issue load, this adds extra CPU overhead for Jira.
Snippet from stacktrace:
... at com.atlassian.greenhopper.service.query.QueryServiceImpl.getProjectsForRapidView(QueryServiceImpl.java:137) at com.atlassian.greenhopper.service.query.QueryServiceImpl.getExplicitProjectsForRapidViewFilterQuery(QueryServiceImpl.java:128) at com.atlassian.greenhopper.service.rapid.ProjectRapidViewServiceImpl.findProjectsByRapidView(ProjectRapidViewServiceImpl.java:69) at com.atlassian.greenhopper.service.rapid.ProjectRapidViewServiceImpl.findRapidViewsByProject(ProjectRapidViewServiceImpl.java:51) at com.atlassian.greenhopper.web.sidebar.ProjectBoardsHelper.getProjectBoards(ProjectBoardsHelper.java:53) at com.atlassian.greenhopper.web.sidebar.BoardScopeFilterContextProviderImpl.getContext(BoardScopeFilterContextProviderImpl.java:47) at com.atlassian.jira.projects.context.ProjectContextPopulatorImpl.populateWithProject(ProjectContextPopulatorImpl.java:82) at com.atlassian.jira.projects.sidebar.navigation.SidebarNavigationService.getNavigationItemById(SidebarNavigationService.java:49) at com.atlassian.jira.projects.sidebar.lastvisited.LastVisitedNavigationItemHelper.getNavigationItemById(LastVisitedNavigationItemHelper.java:58) at com.atlassian.jira.projects.sidebar.lastvisited.LastVisitedItemInProjectService.isValid(LastVisitedItemInProjectService.java:101) at com.atlassian.jira.projects.sidebar.lastvisited.LastVisitedItemInProjectService.setLastVisitedItemIdForProject(LastVisitedItemInProjectService.java:59) at com.atlassian.jira.projects.sidebar.lastvisited.LastVisitedItemResource.updateLastVisitedItem(LastVisitedItemResource.java:51) ...
Based on performance data, /lastVisited calls might be up to 10% of all CPU active threads.
Workaround
Please check JSWSERVER-16717 to be able to disable sidebar loading code.
- causes
-
JSWSERVER-16185 board-scope-filter executed too many time which leads to performance overhead
- Closed
- is caused by
-
JSWSERVER-16130 Performance of findRapidViewsByProject degrades with number of Boards
- Closed
- is related to
-
JRASERVER-62795 Going between Backlog and Active Sprint fires 3 lastVisited rest calls
- Needs Triage
-
JRASERVER-66687 DefaultFieldLayoutManager.getUniqueFieldLayouts generates high memory pressure on large JIRA instances
- Gathering Impact
-
JRASERVER-67442 Create additional method atLeastOneIssueExists for performance enhancement over counting the issues
- Closed
-
JSWSERVER-16717 As a JIRA Administrator I want to have the option to disable sidebar board loading
- Closed
-
FLASH-1137 Loading...
- relates to
-
JSWSERVER-16130 Performance of findRapidViewsByProject degrades with number of Boards
- Closed
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...