-
Bug
-
Resolution: Fixed
-
Low (View bug fix roadmap)
-
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
-
- Closed
-
-
JRASERVER-66687 DefaultFieldLayoutManager.getUniqueFieldLayouts generates high memory pressure on large JIRA instances
-
- Closed
-
-
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...
Form Name |
---|
[JSWSERVER-19230] REST call lastVisited executes board-scope-filter which leads to performance overhead
Remote Link | New: This issue links to "Page (Confluence)" [ 771485 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 483883 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 479634 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 478597 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 474207 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 458409 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 439722 ] |
Remote Link | New: This issue links to "Page (Confluence)" [ 438326 ] |
Description |
Original:
h3. 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 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. h3. 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 h3. Expected Results _getContext_ is not executed h3. Actual Results _getContext_ is executed h3. Notes Taking into account that {{/lastVisited}} is executed for each issue load, this adds extra CPU overhead for Jira. Snippet from stacktrace: {noformat} ... 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) ... {noformat} h3.Workaround Please check |
New:
h3. 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 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. h3. 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 h3. Expected Results _getContext_ is not executed h3. Actual Results _getContext_ is executed h3. Notes Taking into account that {{/lastVisited}} is executed for each issue load, this adds extra CPU overhead for Jira. Snippet from stacktrace: {noformat} ... 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) ... {noformat} Based on performance data, {{/lastVisited}} calls might be up to 10% of all CPU active threads. h3.Workaround Please check |
Resolution | New: Fixed [ 1 ] | |
Status | Original: Waiting for Release [ 12075 ] | New: Closed [ 6 ] |