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

ArtifactDeployer migration breaks lazy-load on Jenkins initialization

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • None
    • Jenkins 1.565.1
      ArtifactDeployer 0.31

      After upgrading to Jenkins 1.565.1 my setup apparently loaded just fine. I then upgraded the ArtifactDeployer to version 0.31 and restarted. The web interface was stuck for quite a long time because artifact deployer register a migration process that ends up loading all projects history.

      Thread dump:

      "Jenkins initialization thread" prio=5 RUNNABLE
      java.io.FileInputStream.readBytes(Native Method)
      java.io.FileInputStream.read(FileInputStream.java:239)
      java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
      java.io.BufferedInputStream.read(BufferedInputStream.java:254)
      java.io.FilterInputStream.read(FilterInputStream.java:83)
      java.io.PushbackInputStream.read(PushbackInputStream.java:139)
      com.thoughtworks.xstream.core.util.XmlHeaderAwareReader.getHeader(XmlHeaderAwareReader.java:79)
      com.thoughtworks.xstream.core.util.XmlHeaderAwareReader.<init>(XmlHeaderAwareReader.java:61)
      com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:65)
      hudson.XmlFile.unmarshal(XmlFile.java:163)
      hudson.model.Run.reload(Run.java:321)
      hudson.model.Run.<init>(Run.java:309)
      hudson.model.AbstractBuild.<init>(AbstractBuild.java:173)
      hudson.model.Build.<init>(Build.java:102)
      hudson.model.FreeStyleBuild.<init>(FreeStyleBuild.java:38)
      sun.reflect.GeneratedConstructorAccessor67.newInstance(Unknown Source)
      sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      java.lang.reflect.Constructor.newInstance(Constructor.java:534)
      jenkins.model.lazy.LazyBuildMixIn.loadBuild(LazyBuildMixIn.java:153)
      jenkins.model.lazy.LazyBuildMixIn$1.create(LazyBuildMixIn.java:134)
      hudson.model.RunMap.retrieve(RunMap.java:218)
      hudson.model.RunMap.retrieve(RunMap.java:56)
      jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:687)
      jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:670)
      jenkins.model.lazy.AbstractLazyLoadRunMap.all(AbstractLazyLoadRunMap.java:622)
      jenkins.model.lazy.AbstractLazyLoadRunMap.entrySet(AbstractLazyLoadRunMap.java:277)
      java.util.AbstractMap$2$1.<init>(AbstractMap.java:378)
      java.util.AbstractMap$2.iterator(AbstractMap.java:377)
      hudson.util.RunList.iterator(RunList.java:97)
      org.jenkinsci.plugins.artifactdeployer.migration.DeployedArtifactsMigrationItemListener.onLoaded(DeployedArtifactsMigrationItemListener.java:29)
      jenkins.model.Jenkins.<init>(Jenkins.java:863)
      hudson.model.Hudson.<init>(Hudson.java:82)
      hudson.model.Hudson.<init>(Hudson.java:78)
      hudson.WebAppMain$3.run(WebAppMain.java:222)

      Once finished, I eventually had access to the web interface. On the next restart, the Jenkins initialization was stuck again with the same thread dump. Seems the migration occurs over and over on every initialization.

      Things to check:

      • should handle the migration after the initialization to avoid blocking the web interface
      • should not lazy load all projects and builds
      • I guess the migration should occur only once.

            gbois Gregory Boissinot
            hashar Antoine Musso
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: