提交 0449883d 编写于 作者: J Jesse Glick

[FIXED JENKINS-23945] Test result trend graph should not load builds which were not already loaded.

上级 479dfb40
......@@ -70,6 +70,9 @@ Upcoming changes</a>
<li class="bug">
Startup can be broken by deeply recursive causes in build records.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-24161">issue 24161</a>)
<li class="bug">
Displaying unabridged test result trend on project index page defeated lazy loading.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-23945">issue 23945</a>)
<li class="rfe">
Added support for host:port format in X-Forwarded-Host header.
(<a href="https://github.com/jenkinsci/jenkins/commit/19d8b80bb2f33e4877c7170bcca8bfa318ebe77d">commit 19d8b80</a>)
......
......@@ -34,6 +34,7 @@ import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import jenkins.model.RunAction2;
import org.jfree.chart.ChartFactory;
......@@ -187,13 +188,14 @@ public abstract class AbstractTestResultAction<T extends AbstractTestResultActio
* Gets the test result of the previous build, if it's recorded, or null.
*/
public T getPreviousResult() {
return (T)getPreviousResult(getClass());
return (T)getPreviousResult(getClass(), true);
}
private <U extends AbstractTestResultAction> U getPreviousResult(Class<U> type) {
private <U extends AbstractTestResultAction> U getPreviousResult(Class<U> type, boolean eager) {
Set<Integer> loadedBuilds = eager ? null : owner.getProject()._getRuns().getLoadedBuilds().keySet();
AbstractBuild<?,?> b = owner;
while(true) {
b = b.getPreviousBuild();
b = eager || loadedBuilds.contains(b.number - /* assuming there are no gaps */1) ? b.getPreviousBuild() : null;
if(b==null)
return null;
U r = b.getAction(type);
......@@ -276,7 +278,7 @@ public abstract class AbstractTestResultAction<T extends AbstractTestResultActio
DataSetBuilder<String,NumberOnlyBuildLabel> dsb = new DataSetBuilder<String,NumberOnlyBuildLabel>();
for( AbstractTestResultAction<?> a=this; a!=null; a=a.getPreviousResult(AbstractTestResultAction.class) ) {
for (AbstractTestResultAction<?> a = this; a != null; a = a.getPreviousResult(AbstractTestResultAction.class, false)) {
dsb.add( a.getFailCount(), "failed", new NumberOnlyBuildLabel(a.owner));
if(!failureOnly) {
dsb.add( a.getSkipCount(), "skipped", new NumberOnlyBuildLabel(a.owner));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册