Crunching community update center metadata seems to cause stack overflow in {{hudson.model.UpdateSite$Plugin.isNeededDependenciesCompatibleWithInstalledVersion}}. There is a dependency cycle between workflow-scm-step and subversion plugin.
Can be triggered by artifactdeployer: {noformat} { "buildDate": "Jun 09, 2016", "dependencies": [ { "name": "git", "optional": true, "version": "2.3.5" }, { "name": "perforce", "optional": true, "version": "1.3.7" }, { "name": "workflow-step-api", "optional": false, "version": "2.0" }, { "name": "p4", "optional": true, "version": "1.3.3" }, { "name": "maven-plugin", "optional": true, "version": "1.521" }, { "name": "workflow-cps", "optional": false, "version": "2.0" }, { "name": "ivy", "optional": true, "version": "1.17" }, { "name": "credentials", "optional": true, "version": "1.22" }, { "name": "subversion", "optional": true, "version": "2.5" }, { "name": "flexible-publish", "optional": true, "version": "0.12" }, { "name": "jenkins-multijob-plugin", "optional": true, "version": "1.13" }, { "name": "gradle", "optional": false, "version": "1.15" }, { "name": "ant", "optional": true, "version": "1.2" }, { "name": "jira", "optional": true, "version": "2.2" } ], "developers": [ { "developerId": "yossis", "email": "yos...@jfrog.org", "name": "Yossi Shaul" }], "excerpt": "This plugin allows deploying Maven 2, Maven 3, Ivy and Gradle artifacts and build info to the Artifactory artifacts manager.", "gav": "org.jenkins-ci.plugins:artifactory:2.5.0", "labels": ["pipeline"], "name": "artifactory", "previousTimestamp": "2016-01-12T10:55:22.00Z", "previousVersion": "2.4.7", "releaseTimestamp": "2016-06-09T18:19:22.00Z", "requiredCore": "1.521", "scm": "github.com", "sha1": "iF3EiEMmbxKaW5l4xcY7we2bJeA=", "title": "Jenkins Artifactory Plugin", "url": "http://updates.jenkins-ci.org/download/plugins/artifactory/2.5.0/artifactory.hpi", "version": "2.5.0", "wiki": "https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin" } {noformat}
Can be reporoduced by: {noformat} Jenkins.instance.updateCenter.sites.each { println "Site url ${it.url}" println it.getJSONObject().getJSONObject("plugins").get('artifactory').toString(4) it = it.getPlugin('artifactory') println "\tplugin ${it.name}" println "\t${it.neededDependencies.collect { it.name }}" println "\t${isNeededDependenciesCompatibleWithInstalledVersion(it)}" }
return null;
boolean isNeededDependenciesCompatibleWithInstalledVersion(plugin) { println "inspect ${plugin.name}" for (p in plugin.getNeededDependencies()) { println "dep ${p.name}" if (!p.isCompatibleWithInstalledVersion() || !isNeededDependenciesCompatibleWithInstalledVersion(p)) return false; } return true; } {noformat}
While it work in 1.609.3, it seems like an accident to me and as there is unnecesary recursion as well , though not infinite. |
|
|