-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Jenkins 1.580.2, delivery-pipeline-plugin 0.8.8, build-pipeline-plugin 1.4.5, Ubuntu 12.04, Chrome, Oracle Java 1.7.
Performance of the delivery pipeline view degrades significantly when using a high number (100+) of folders and projects. A single user request will cause the Jenkins java process to tie up a full CPU. A thread dump during this situation shows usually all threads idle except those with stacks similar to the snippet below.
Example thread stack:
at java.util.Collections$UnmodifiableCollection$1.hasNext(Collections.java:1066) at com.cloudbees.hudson.plugins.folder.Folder.getItems(Folder.java:503) at se.diabol.jenkins.pipeline.util.ProjectUtil.find(ProjectUtil.java:108) at se.diabol.jenkins.pipeline.util.ProjectUtil.find(ProjectUtil.java:110) at se.diabol.jenkins.pipeline.util.ProjectUtil.getProject(ProjectUtil.java:88) at se.diabol.jenkins.pipeline.util.BuildUtil.getUpstreamBuild(BuildUtil.java:40) at se.diabol.jenkins.pipeline.util.BuildUtil.getFirstUpstreamBuild(BuildUtil.java:65) at se.diabol.jenkins.pipeline.util.BuildUtil.match(BuildUtil.java:83) at se.diabol.jenkins.pipeline.domain.Task.getLatestTask(Task.java:142) at se.diabol.jenkins.pipeline.domain.Stage.createLatestStage(Stage.java:188) at se.diabol.jenkins.pipeline.domain.Pipeline.createPipelineLatest(Pipeline.java:149) at se.diabol.jenkins.pipeline.DeliveryPipelineView.getComponent(DeliveryPipelineView.java:328) at se.diabol.jenkins.pipeline.DeliveryPipelineView.getPipelines(DeliveryPipelineView.java:293)
I have created pull request 94 to address this. This has been verified in a production Jenkins environment. Also, CPU load has been shown to be significantly reduced.