-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Job DSL 1.46+
Jenkins 2.2+
After migration to Jenkins 2.11 (from 1.642.4) some time ago we noticed a significant performance regression in the execution time of our Job DSL seeds. For example a time of generation ~3500 jobs in one seed doubled (from ~7 minutes to ~15).
I analyzed the problem and after digging it out, profiling and bisecting the code I was able to find a reason. The "regression" was introduced in Jenkins 2.2 and affects only Jenkins 2.2+ and Job DSL 1.46+. Job DSL 1.46 started to use @Symbol to use `SymbolLookup` from Structs plugin to find `DescribableModel`s (in a `DescribableHelper` class). In general symbols are good, but also seems to be much slower.
This is especially painful in a seed which creates dozens/hundreds of the same pipelines for different µservices/products/realms (for example based on custom configuration descriptors resolved in a Git repo) - the same lookup operations are repeated. I have some ideas how it could be improved/mitigated and I will start a discussion on the project mailing list.