-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major
-
Component/s: delivery-pipeline-plugin
-
None
-
Environment: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.