Pipeline job seed dsl is very slow

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      Jenkins job seed dsl is extremely slow. We are using version Jenkins 2.414.3.
      Job DSL Version1.87

      We have a main pipeline that creates multiple downstream jobs using such syntax:

                              for (String jobName : pipelineQualityGatesJobs) {
                                  jobDsl scriptText: """pipelineJob("${env.JOB_NAME}_${devJobPrefix}${jobName}") {
                                           parameters {
                                              stringParam('branch',"${gitBranch}",'branch')
                                              stringParam('buildmajor',"${pipelineMajor}",'release major identifier')
                                              stringParam('buildminor',"${pipelineMinor}",'release minor identifier')
                                              stringParam('fix', "${pipelineFix}",'fix level')
                                              stringParam('commitID', "${gitCommitID}",'git commit id')
                                              stringParam('buildnumber', "${pipelineBuildNumber}",'build number')
                                              stringParam('parentjob', "${pipelineName}",'optional parent job')
                                              stringParam('devuser', "${devuser}")
                                              stringParam('pipelinesBranch', "${jenkinsLibsBranch}")
                                              stringParam('shallowCloneDepth', "${shallowCloneDepthParam}")
                                          }
                                          removedJobAction: 'IGNORE'
      									ignoreExisting: 'TRUE'
                                          definition {
                                              cpsScm {
                                                      scm {
                                                          git {
                                                              remote {
                                                                  url("${jenkinsRepository}")
                                                                  credentials('UM.GH.read.write')
                                                              }
                                                              branch("${jenkinsLibsBranch}")
                                                          }
                                                      }
                                                      scriptPath('jenkinsfiles/${jobName}/jenkinsfile.groovy') 
                                              }
                                          }
                                      }
                                      """.stripIndent()
                              }
      

      The downstream jobs are approximately 20. This sometimes takes 4 hours.

      2023-11-22 12:55:10  Processing provided DSL script
      2023-11-22 12:56:20  Unreferenced items:
      

      Here is a thread dump:

      "org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution [#786]" Id=107307 Group=main BLOCKED on javaposse.jobdsl.plugin.DescriptorImpl@f128c3d owned by "org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution [#838]" Id=114970
      	at hudson.model.Descriptor.save(Descriptor.java:910)
      	-  *blocked on javaposse.jobdsl.plugin.DescriptorImpl@f128c3d*
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.updateGeneratedJobMap(ExecuteDslScripts.java:559)
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.updateGeneratedJobs(ExecuteDslScripts.java:520)
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:380)
      	at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
      	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
      	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
      	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$$Lambda$1155/0x000000080177c840.run(Unknown Source)
      	at java.base@11.0.14.1/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	at java.base@11.0.14.1/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base@11.0.14.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base@11.0.14.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base@11.0.14.1/java.lang.Thread.run(Thread.java:829)
       
      	Number of locked synchronizers = 1
      	- java.util.concurrent.ThreadPoolExecutor$Worker@545761b4
      org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution [#838] 
      "org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution [#838]" Id=114970 Group=main RUNNABLE
      	at java.base@11.0.14.1/java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
      	at java.base@11.0.14.1/java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:248)
      	at java.base@11.0.14.1/java.io.File.exists(File.java:831)
      	at hudson.plugins.jobConfigHistory.HistoryFileFilter.accept(HistoryFileFilter.java:54)
      	at java.base@11.0.14.1/java.io.File.listFiles(File.java:1342)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.getRevisionsFromHistoriesDir(FileHistoryDao.java:553)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.getRevisions(FileHistoryDao.java:540)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.getRevisions(FileHistoryDao.java:534)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.hasDuplicateHistory(FileHistoryDao.java:879)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.checkDuplicate(FileHistoryDao.java:905)
      	at hudson.plugins.jobConfigHistory.FileHistoryDao.saveItem(FileHistoryDao.java:420)
      	at hudson.plugins.jobConfigHistory.JobConfigHistorySaveableListener.onChange(JobConfigHistorySaveableListener.java:62)
      	at hudson.model.listeners.SaveableListener.fireOnChange(SaveableListener.java:82)
      	at hudson.model.Descriptor.save(Descriptor.java:913)
      	-  locked javaposse.jobdsl.plugin.DescriptorImpl@f128c3d
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.updateGeneratedJobMap(ExecuteDslScripts.java:559)
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.updateGeneratedJobs(ExecuteDslScripts.java:520)
      	at javaposse.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:380)
      	at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
      	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:101)
      	at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:71)
      	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
      	at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution$$Lambda$1155/0x000000080177c840.run(Unknown Source)
      	at java.base@11.0.14.1/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
      	at java.base@11.0.14.1/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base@11.0.14.1/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      	at java.base@11.0.14.1/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      	at java.base@11.0.14.1/java.lang.Thread.run(Thread.java:829)
       
      	Number of locked synchronizers = 1
      	- java.util.concurrent.ThreadPoolExecutor$Worker@409fda9a
      

      Looking for hints how to avoid this or what causes it?

            Assignee:
            Jamie Tanna
            Reporter:
            Vassilena Treneva
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: