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

Jenkins 2.0-rc1 - Getting started hangs installing plugins

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • core
    • jenkins 2.0-rc1
      Windows 7
      java version "1.8.0_45"

      Jenkins 2.0-rc1 hangs for me when installing plugins. I started it with a new jenkins home:

      set JENKINS_HOME=c:\j2
      java -jar jenkins-2.0-rc1.war
      Copy admin password into localhost:8080
      Install suggested plugins

      Some plugins install, others just sit and spin. I have left if for over an hour.

      There is an exception in the console:

      java.lang.InstantiationException: java.lang.NoClassDefFoundError: com/cloudbees/hudson/plugins/folder/AbstractFolderPropertyDescriptor
              at net.java.sezpoz.IndexItem.element(IndexItem.java:146)
              at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:623)
              at hudson.ExtensionFinder$Sezpoz.access$800(ExtensionFinder.java:550)
              at hudson.ExtensionFinder$Sezpoz$1.find(ExtensionFinder.java:594)
              at hudson.ExtensionFinder$GuiceFinder.refresh(ExtensionFinder.java:329)
              at jenkins.model.Jenkins.refreshExtensions(Jenkins.java:2383)
              at hudson.PluginManager.dynamicLoad(PluginManager.java:691)
              at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1670)
              at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1452)
              at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
              at java.util.concurrent.FutureTask.run(Unknown Source)
              at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
              at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.NoClassDefFoundError: com/cloudbees/hudson/plugins/folder/A bstractFolderPropertyDescriptor
              at java.lang.ClassLoader.defineClass1(Native Method)
              at java.lang.ClassLoader.defineClass(Unknown Source)
              at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1139)
              at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:895)
              at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1310)
              at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)
              at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
              at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
              at java.lang.reflect.Method.invoke(Unknown Source)
              at jenkins.ClassLoaderReflectionToolkit.invoke(ClassLoaderReflectionToolkit.java:44)
              at jenkins.ClassLoaderReflectionToolkit._findClass(ClassLoaderReflectionToolkit.java:86)
              at hudson.PluginManager$UberClassLoader.findClass(PluginManager.java:1548)
              at java.lang.ClassLoader.loadClass(Unknown Source)
              at java.lang.ClassLoader.loadClass(Unknown Source)
              at net.java.sezpoz.IndexItem.element(IndexItem.java:134)
              ... 12 more
      Caused by: java.lang.ClassNotFoundException: com.cloudbees.hudson.plugins.folder.AbstractFolderPropertyDescriptor
              at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
              at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
              at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079)
              at java.lang.ClassLoader.loadClass(Unknown Source)
              ... 28 more
      

        1. GettingStartedHang.png
          GettingStartedHang.png
          82 kB
        2. threadDump.txt
          32 kB
        3. threadDump2.txt
          32 kB

          [JENKINS-34174] Jenkins 2.0-rc1 - Getting started hangs installing plugins

          I wonder if there is a deadlock somewhere in the plugin download code due to higher latency. My ping times to updates.jenkins-ci.org are about 100ms.

          Is there an option to download plugins sequentially? Or can I specify a mirror with a lower ping?

          Russell Gallop added a comment - I wonder if there is a deadlock somewhere in the plugin download code due to higher latency. My ping times to updates.jenkins-ci.org are about 100ms. Is there an option to download plugins sequentially? Or can I specify a mirror with a lower ping?

          Daniel Beck added a comment - - edited

          Notable excerpts from the thread dumps:

          "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/structs/1.1/structs.hpi" Id=80 Group=main RUNNABLE (in native)
          	at java.net.SocketInputStream.socketRead0(Native Method)
          	at java.net.SocketInputStream.socketRead(Unknown Source)
          	at java.net.SocketInputStream.read(Unknown Source)
          	at java.net.SocketInputStream.read(Unknown Source)
          	at java.io.BufferedInputStream.read1(Unknown Source)
          	at java.io.BufferedInputStream.read(Unknown Source)
          	-  locked java.io.BufferedInputStream@4d998b3c
          	at sun.net.www.MeteredStream.read(Unknown Source)
          	-  locked sun.net.www.MeteredStream@541aaf13
          	at java.io.FilterInputStream.read(Unknown Source)
          	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
          	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
          	at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:77)
          	at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:1020)
          	at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1474)
          	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1655)
          	at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1452)
          	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
          	at java.util.concurrent.FutureTask.run(Unknown Source)
          	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
          	at java.lang.Thread.run(Unknown Source)
          "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/external-monitor-job/1.4/external-monitor-job.hpi" Id=80 Group=main RUNNABLE (in native)
          	at java.net.SocketInputStream.socketRead0(Native Method)
          	at java.net.SocketInputStream.socketRead(Unknown Source)
          	at java.net.SocketInputStream.read(Unknown Source)
          	at java.net.SocketInputStream.read(Unknown Source)
          	at java.io.BufferedInputStream.read1(Unknown Source)
          	at java.io.BufferedInputStream.read(Unknown Source)
          	-  locked java.io.BufferedInputStream@64d42078
          	at sun.net.www.MeteredStream.read(Unknown Source)
          	-  locked sun.net.www.MeteredStream@60eba83a
          	at java.io.FilterInputStream.read(Unknown Source)
          	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
          	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
          	at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:77)
          	at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:1020)
          	at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1474)
          	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1655)
          	at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1452)
          	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
          	at java.util.concurrent.FutureTask.run(Unknown Source)
          	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
          	at java.lang.Thread.run(Unknown Source)

          Daniel Beck added a comment - - edited Notable excerpts from the thread dumps: "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/structs/1.1/structs.hpi" Id=80 Group=main RUNNABLE (in native) at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked java.io.BufferedInputStream@4d998b3c at sun.net.www.MeteredStream.read(Unknown Source) - locked sun.net.www.MeteredStream@541aaf13 at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:77) at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:1020) at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1474) at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1655) at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1452) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110) at java.lang.Thread.run(Unknown Source) "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/external-monitor-job/1.4/external-monitor-job.hpi" Id=80 Group=main RUNNABLE (in native) at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.socketRead(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.net.SocketInputStream.read(Unknown Source) at java.io.BufferedInputStream.read1(Unknown Source) at java.io.BufferedInputStream.read(Unknown Source) - locked java.io.BufferedInputStream@64d42078 at sun.net.www.MeteredStream.read(Unknown Source) - locked sun.net.www.MeteredStream@60eba83a at java.io.FilterInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source) at org.apache.commons.io.input.ProxyInputStream.read(ProxyInputStream.java:77) at hudson.model.UpdateCenter$UpdateCenterConfiguration.download(UpdateCenter.java:1020) at hudson.model.UpdateCenter$DownloadJob._run(UpdateCenter.java:1474) at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1655) at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1452) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110) at java.lang.Thread.run(Unknown Source)

          Daniel Beck added a comment -

          Should probably timeout a plugin download that just doesn't finish, combined with an option to retry.

          Daniel Beck added a comment - Should probably timeout a plugin download that just doesn't finish, combined with an option to retry.

          Keith Zantow added a comment -

          This definitely looks like some sort of network issue, we can add some timeouts to the plugin downloads, I think, which would end up causing failures to be reported to the installer (which is the right thing to do). This doesn't look like any deadlock issue to me, as these threads are waiting on responses from the OS sockets:

          "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/structs/1.1/structs.hpi" Id=80 Group=main RUNNABLE (in native)
          	at java.net.SocketInputStream.socketRead0(Native Method)
          

          Keith Zantow added a comment - This definitely looks like some sort of network issue, we can add some timeouts to the plugin downloads, I think, which would end up causing failures to be reported to the installer (which is the right thing to do). This doesn't look like any deadlock issue to me, as these threads are waiting on responses from the OS sockets: "Update center installer thread [#2]: http://updates.jenkins-ci.org/download/plugins/structs/1.1/structs.hpi" Id=80 Group=main RUNNABLE (in native) at java.net.SocketInputStream.socketRead0(Native Method)

          Sam Van Oort added a comment - - edited

          Encountered in testfest, definitely needs a timeout+retry option, hangs indefinitely for me when there is a network fault.

          Can this show the error like we do with normal plugin installation?

          Sam Van Oort added a comment - - edited Encountered in testfest, definitely needs a timeout+retry option, hangs indefinitely for me when there is a network fault. Can this show the error like we do with normal plugin installation?

          Keith Zantow added a comment -

          svanoort yes, a failed plugin install for any reason should show up as an error. In addition to the 'retry' option from another ticket, I think the experience here should be as good as can be expected when downloading plugins is failing.

          Keith Zantow added a comment - svanoort yes, a failed plugin install for any reason should show up as an error. In addition to the 'retry' option from another ticket, I think the experience here should be as good as can be expected when downloading plugins is failing.

          Sam Van Oort added a comment -

          Yeah, if there's any way we can simply use the logic from normal plugin installation, I think that's a reasonable step, if it saves effort.

          Sam Van Oort added a comment - Yeah, if there's any way we can simply use the logic from normal plugin installation, I think that's a reasonable step, if it saves effort.

          Code changed in jenkins
          User: kzantow
          Path:
          core/src/main/java/hudson/PluginManager.java
          core/src/main/java/hudson/model/UpdateCenter.java
          core/src/main/resources/jenkins/install/pluginSetupWizard.properties
          war/src/main/js/api/pluginManager.js
          war/src/main/js/pluginSetupWizardGui.js
          war/src/main/js/templates/successPanel.hbs
          http://jenkins-ci.org/commit/jenkins/6974d2b7593e3eef3a7fd28117b58382c3368189
          Log:
          JENKINS-33244 / JENKINS-34174 - retry for failed plugins & specify
          download timeout

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: kzantow Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/model/UpdateCenter.java core/src/main/resources/jenkins/install/pluginSetupWizard.properties war/src/main/js/api/pluginManager.js war/src/main/js/pluginSetupWizardGui.js war/src/main/js/templates/successPanel.hbs http://jenkins-ci.org/commit/jenkins/6974d2b7593e3eef3a7fd28117b58382c3368189 Log: JENKINS-33244 / JENKINS-34174 - retry for failed plugins & specify download timeout

          Code changed in jenkins
          User: kzantow
          Path:
          core/src/main/java/hudson/PluginManager.java
          core/src/main/resources/jenkins/install/pluginSetupWizard.properties
          war/src/main/js/pluginSetupWizardGui.js
          war/src/main/js/templates/pluginSelectionPanel.hbs
          war/src/main/js/templates/welcomePanel.hbs
          war/src/main/less/pluginSetupWizard.less
          http://jenkins-ci.org/commit/jenkins/e612f4163a0e1acedfed9baed6e79cf2bad6fabe
          Log:
          Merge remote-tracking branch 'primary/master' into
          JENKINS-34174-plugin-download-timeout

          1. Conflicts:
          2. core/src/main/resources/jenkins/install/pluginSetupWizard.properties

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: kzantow Path: core/src/main/java/hudson/PluginManager.java core/src/main/resources/jenkins/install/pluginSetupWizard.properties war/src/main/js/pluginSetupWizardGui.js war/src/main/js/templates/pluginSelectionPanel.hbs war/src/main/js/templates/welcomePanel.hbs war/src/main/less/pluginSetupWizard.less http://jenkins-ci.org/commit/jenkins/e612f4163a0e1acedfed9baed6e79cf2bad6fabe Log: Merge remote-tracking branch 'primary/master' into JENKINS-34174 -plugin-download-timeout Conflicts: core/src/main/resources/jenkins/install/pluginSetupWizard.properties

          Code changed in jenkins
          User: Daniel Beck
          Path:
          core/src/main/java/hudson/PluginManager.java
          core/src/main/java/hudson/model/UpdateCenter.java
          core/src/main/resources/jenkins/install/pluginSetupWizard.properties
          war/src/main/js/api/pluginManager.js
          war/src/main/js/pluginSetupWizardGui.js
          war/src/main/js/templates/successPanel.hbs
          http://jenkins-ci.org/commit/jenkins/8a19e8ae3d82602bf36ac5624056cae2e6950e25
          Log:
          Merge pull request #2282 from kzantow/JENKINS-34174-plugin-download-timeout

          JENKINS-33244 better handling of failed plugins during setup wizard

          Compare: https://github.com/jenkinsci/jenkins/compare/a4b070bd7357...8a19e8ae3d82

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: core/src/main/java/hudson/PluginManager.java core/src/main/java/hudson/model/UpdateCenter.java core/src/main/resources/jenkins/install/pluginSetupWizard.properties war/src/main/js/api/pluginManager.js war/src/main/js/pluginSetupWizardGui.js war/src/main/js/templates/successPanel.hbs http://jenkins-ci.org/commit/jenkins/8a19e8ae3d82602bf36ac5624056cae2e6950e25 Log: Merge pull request #2282 from kzantow/ JENKINS-34174 -plugin-download-timeout JENKINS-33244 better handling of failed plugins during setup wizard Compare: https://github.com/jenkinsci/jenkins/compare/a4b070bd7357...8a19e8ae3d82

            kzantow Keith Zantow
            rg Russell Gallop
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: