Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-36239

StackOverflowError in plugin manager on 1.596.1

    Details

    • Similar Issues:

      Description

      Workaround

      Update to subversion 2.5.7, scm-api 0.2 and mapdb-api 1.0.1.0 via plugin managers upload functionality on advanced tab. Make sure you are using 1.596.* first.

      Issue

      Crunching community update center metadata seems to cause stack overflow in hudson.model.UpdateSite$Plugin.isNeededDependenciesCompatibleWithInstalledVersion.

      Can be triggered by artifactdeployer. There is a dependency cycle between workflow-scm-step and subversion plugin, in case subversion is outdated and workflow-scm-step not installed:

      {
          "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": "yossis@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"
      }
      

      Can be reporoduced by:

      def pluginname = 'artifactory'
      
      Jenkins.instance.updateCenter.sites.each {
        println "Site url ${it.url}"
        println it.getJSONObject().getJSONObject("plugins").get(pluginname).toString(4)
        
        subversion = it.getPlugin("subversion")
        wscps = it.getPlugin("workflow-scm-step")
        println "${subversion.name} ${subversion.installed?.version}"
        println "${wscps.name} ${wscps.installed?.version}"
        
        it = it.getPlugin(pluginname)
        println "\tplugin ${it.name}"
        println "\t${it.neededDependencies.collect { it.name }}"
        println "\t${isNeededDependenciesCompatibleWithInstalledVersion(it)}"
      }
      
      return null;
      
      boolean isNeededDependenciesCompatibleWithInstalledVersion(plugin) {
        println "inspect ${plugin.name}"
        println "    deps ${plugin.getNeededDependencies().collect { it.name }}"
                  for (p in plugin.getNeededDependencies()) {
                      if (!p.isCompatibleWithInstalledVersion() || !isNeededDependenciesCompatibleWithInstalledVersion(p))
                          return false;
                  }
                  return true;
              }
      

      While it work in 1.609.3, it seems like an accident to me as there is unnecesary recursion as well, though not infinite.

        Attachments

          Issue Links

            Activity

            Hide
            4wire Channy Tremblay added a comment -

            Thanks Oliver. Can I use the same workaround as above? I don't want to break too many things and you specified it needed 1.596.*

            Show
            4wire Channy Tremblay added a comment - Thanks Oliver. Can I use the same workaround as above? I don't want to break too many things and you specified it needed 1.596.*
            Hide
            olivergondza Oliver Gondža added a comment -

            Channy Tremblay, Run the attached script in script console (and attach the output in pastebin if it is different what what is reported). It will tell you what plugins are involved in the cycle. Installing/upgrading one of them should prevent that problem from appearing - so better choose some with no dependencies so you can not cause much damage uploading plugin manually. Once plugin manager is fully operational install/update/uninstall what you need but keep at least one of the offended plugins installed.

            Show
            olivergondza Oliver Gondža added a comment - Channy Tremblay , Run the attached script in script console (and attach the output in pastebin if it is different what what is reported). It will tell you what plugins are involved in the cycle. Installing/upgrading one of them should prevent that problem from appearing - so better choose some with no dependencies so you can not cause much damage uploading plugin manually. Once plugin manager is fully operational install/update/uninstall what you need but keep at least one of the offended plugins installed.
            Hide
            vincent_m Vincent Morel added a comment -

            Got something really similar today while trying to update a 1.596 install directly to 2.17.
            Jenkins wouldn't start and crashed with almost the same StackOverflowError but on isNeededDependenciesForNewerJenkins:

            Aug 09, 2016 5:09:25 PM hudson.util.BootFailure publish
            SEVERE: Failed to initialize Jenkins
            hudson.util.HudsonFailedToLoad: java.lang.StackOverflowError
            	at hudson.WebAppMain$3.run(WebAppMain.java:241)
            Caused by: java.lang.StackOverflowError
            	at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
            	at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
            	at java.io.File.exists(File.java:819)
            	at hudson.util.TextFile.exists(TextFile.java:57)
            	at hudson.model.UpdateSite.getData(UpdateSite.java:289)
            	at hudson.model.UpdateSite.getPlugin(UpdateSite.java:349)
            	at hudson.model.UpdateCenter.getPlugin(UpdateCenter.java:611)
            	at hudson.model.UpdateSite$Plugin.getNeededDependencies(UpdateSite.java:733)
            	at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:800)
            	at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801)
            	at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801)
            	at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801)
            

            I couldn't figure out while at work so I reverted to 1.596 for now.
            Looking back into it from home I just saw I also have this StackOverflowError in the middle of the plugin manager... which made me find this issue.

            Show
            vincent_m Vincent Morel added a comment - Got something really similar today while trying to update a 1.596 install directly to 2.17. Jenkins wouldn't start and crashed with almost the same StackOverflowError but on isNeededDependenciesForNewerJenkins: Aug 09, 2016 5:09:25 PM hudson.util.BootFailure publish SEVERE: Failed to initialize Jenkins hudson.util.HudsonFailedToLoad: java.lang.StackOverflowError at hudson.WebAppMain$3.run(WebAppMain.java:241) Caused by: java.lang.StackOverflowError at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242) at java.io.File.exists(File.java:819) at hudson.util.TextFile.exists(TextFile.java:57) at hudson.model.UpdateSite.getData(UpdateSite.java:289) at hudson.model.UpdateSite.getPlugin(UpdateSite.java:349) at hudson.model.UpdateCenter.getPlugin(UpdateCenter.java:611) at hudson.model.UpdateSite$Plugin.getNeededDependencies(UpdateSite.java:733) at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:800) at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801) at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801) at hudson.model.UpdateSite$Plugin.isNeededDependenciesForNewerJenkins(UpdateSite.java:801) I couldn't figure out while at work so I reverted to 1.596 for now. Looking back into it from home I just saw I also have this StackOverflowError in the middle of the plugin manager... which made me find this issue.
            Hide
            4wire Channy Tremblay added a comment - - edited

            The workaround worked for me as well on 1.583

            Note : I encountered an issue with ssh on slave nodes. See JENKINS-25241 for help.

            Show
            4wire Channy Tremblay added a comment - - edited The workaround worked for me as well on 1.583 Note : I encountered an issue with ssh on slave nodes. See JENKINS-25241 for help.
            Hide
            leog Leo Geng added a comment -

            Hi Vincent Morel,

            We are getting the exact same error message while trying to update from 1.587 to 2.7.1.
            Did you find a fix for this issue?

            Show
            leog Leo Geng added a comment - Hi Vincent Morel, We are getting the exact same error message while trying to update from 1.587 to 2.7.1. Did you find a fix for this issue?

              People

              • Assignee:
                Unassigned
                Reporter:
                olivergondza Oliver Gondža
              • Votes:
                6 Vote for this issue
                Watchers:
                15 Start watching this issue

                Dates

                • Created:
                  Updated: