Issue Type: Bug Bug
Assignee: Unassigned
Components: core
Created: 22/Nov/13 6:14 PM
Description:

The Jenkins dashboard was taking a ridiculously long time to render. A number of threads showed stack traces like

"Handling GET / : http-8080-2" ...
   java.lang.Thread.State: RUNNABLE
	at java.io.FileInputStream.readBytes(Native Method)
	at java.io.FileInputStream.read(Unknown Source)
	at java.io.BufferedInputStream.fill(Unknown Source)
	at java.io.BufferedInputStream.read(Unknown Source)
	- locked <0x00000000fcb65020> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(Unknown Source)
	at java.io.PushbackInputStream.read(Unknown Source)
	at com.thoughtworks.xstream.core.util.XmlHeaderAwareReader.getHeader(XmlHeaderAwareReader.java:79)
	at com.thoughtworks.xstream.core.util.XmlHeaderAwareReader.<init>(XmlHeaderAwareReader.java:61)
	at com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:65)
	at hudson.XmlFile.unmarshal(XmlFile.java:166)
	at hudson.model.Run.reload(Run.java:310)
	at hudson.model.Run.<init>(Run.java:299)
	at hudson.model.AbstractBuild.<init>(AbstractBuild.java:182)
	at hudson.maven.AbstractMavenBuild.<init>(AbstractMavenBuild.java:54)
	at hudson.maven.MavenBuild.<init>(MavenBuild.java:113)
	at sun.reflect.GeneratedConstructorAccessor75.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at hudson.model.AbstractProject.loadBuild(AbstractProject.java:1129)
	at hudson.model.AbstractProject$1.create(AbstractProject.java:325)
	at hudson.model.AbstractProject$1.create(AbstractProject.java:323)
	at hudson.model.RunMap.retrieve(RunMap.java:225)
	at hudson.model.RunMap.retrieve(RunMap.java:59)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:674)
	- locked <0x00000000d17b2608> (a hudson.model.RunMap)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:657)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.search(AbstractLazyLoadRunMap.java:456)
	at hudson.model.AbstractBuild.getPreviousBuild(AbstractBuild.java:220)
	at hudson.tasks.Fingerprinter$FingerprintAction.compact(Fingerprinter.java:356)
	at hudson.tasks.Fingerprinter$FingerprintAction.onLoad(Fingerprinter.java:345)
	at hudson.model.Run.onLoad(Run.java:323)
	at hudson.model.RunMap.retrieve(RunMap.java:226)
	at hudson.model.RunMap.retrieve(RunMap.java:59)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:674)
	- locked <0x00000000d17b2608> (a hudson.model.RunMap)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.load(AbstractLazyLoadRunMap.java:657)
	at jenkins.model.lazy.AbstractLazyLoadRunMap.search(AbstractLazyLoadRunMap.java:456)
	at hudson.model.AbstractProject.getNearestOldBuild(AbstractProject.java:1076)
	at hudson.maven.MavenModuleSetBuild.getModuleLastBuilds(MavenModuleSetBuild.java:465)
	at hudson.maven.MavenModuleSetBuild.computeResult(MavenModuleSetBuild.java:212)
	at hudson.maven.MavenModuleSetBuild.getResult(MavenModuleSetBuild.java:203)
	- locked <0x00000000f286c990> (a java.lang.Object)
	at hudson.model.Run.getIconColor(Run.java:701)
	at hudson.model.Job.getBuildStabilityHealthReport(Job.java:1035)
	at hudson.model.Job.getBuildHealthReports(Job.java:1010)
	at hudson.model.Job.getBuildHealth(Job.java:975)

It seems that buildHealth.jelly, called from WeatherColumn/column.jelly, does some potentially rather expensive computations, especially when Maven projects are concerned. This should be done asynchronously, not in the HTTP rendering thread.

Project: Jenkins
Labels: performance
Priority: Major Major
Reporter: Jesse Glick
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators.
For more information on JIRA, see: http://www.atlassian.com/software/jira

--
You received this message because you are subscribed to the Google Groups "Jenkins Issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to