Skip to content

Commit 167bbea

Browse files
committed
Fix link to polling log of upstream changes after restart
fixes jenkinsci#21106 When a run was caused by an upstream change that itself was triggered by an SCMTriggerCause, the link on the run to the pollingLog was lost after a Jenkins restart The root cause of the problem is the fix for jenkinsci#23334 which removed the `onLoad(Run build)` from the upstream cause which effectively prevents loading of upstream causes.
1 parent a3f2c15 commit 167bbea

File tree

6 files changed

+112
-0
lines changed

6 files changed

+112
-0
lines changed

core/src/main/java/hudson/model/Cause.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,11 @@ private UpstreamCause(String upstreamProject, int upstreamBuild, String upstream
199199
this.upstreamCauses = upstreamCauses;
200200
}
201201

202+
@Override
203+
public void onLoad(@NonNull Run<?, ?> build) {
204+
onLoad(build.getParent(), build.getNumber());
205+
}
206+
202207
@Override
203208
public void onLoad(@NonNull Job<?, ?> _job, int _buildNumber) {
204209
Item i = Jenkins.get().getItemByFullName(this.upstreamProject);

test/src/test/java/hudson/model/CauseTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@
2929
import static org.hamcrest.Matchers.instanceOf;
3030
import static org.junit.jupiter.api.Assertions.assertEquals;
3131
import static org.junit.jupiter.api.Assertions.assertFalse;
32+
import static org.junit.jupiter.api.Assertions.assertNotNull;
3233
import static org.junit.jupiter.api.Assertions.assertTrue;
3334

3435
import edu.umd.cs.findbugs.annotations.NonNull;
3536
import hudson.XmlFile;
3637
import hudson.model.queue.QueueTaskFuture;
3738
import hudson.tasks.BuildTrigger;
39+
import hudson.triggers.SCMTrigger;
3840
import hudson.util.StreamTaskListener;
3941
import java.io.ByteArrayOutputStream;
4042
import java.io.File;
@@ -270,6 +272,18 @@ void basicCauseIsSafe() throws Exception {
270272
}
271273
}
272274

275+
@Test
276+
@LocalData
277+
void upstreamCauseOnLoad() throws Exception {
278+
final Item item = j.jenkins.getItemByFullName("downstream");
279+
assertThat(item, instanceOf(FreeStyleProject.class));
280+
FreeStyleProject down = (FreeStyleProject) item;
281+
final FreeStyleBuild build = down.getBuildByNumber(1);
282+
Cause.UpstreamCause upstreamCause = (Cause.UpstreamCause) build.getCauses().getFirst();
283+
SCMTrigger.SCMTriggerCause scmCause = (SCMTrigger.SCMTriggerCause) upstreamCause.getUpstreamCauses().getFirst();
284+
assertNotNull(scmCause.getRun());
285+
}
286+
273287
public static class SimpleCause extends Cause {
274288
private final String description;
275289

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version='1.1' encoding='UTF-8'?>
2+
<build>
3+
<actions>
4+
<hudson.model.CauseAction>
5+
<causeBag class="linked-hash-map">
6+
<entry>
7+
<hudson.model.Cause_-UpstreamCause>
8+
<upstreamProject>upstream</upstreamProject>
9+
<upstreamUrl>job/upstream/</upstreamUrl>
10+
<upstreamBuild>1</upstreamBuild>
11+
<upstreamCauses>
12+
<hudson.triggers.SCMTrigger_-SCMTriggerCause/>
13+
</upstreamCauses>
14+
</hudson.model.Cause_-UpstreamCause>
15+
<int>1</int>
16+
</entry>
17+
</causeBag>
18+
</hudson.model.CauseAction>
19+
</actions>
20+
<queueId>6</queueId>
21+
<timestamp>1595937941553</timestamp>
22+
<startTime>1595937941557</startTime>
23+
<result>SUCCESS</result>
24+
<duration>2</duration>
25+
<charset>UTF-8</charset>
26+
<keepLog>false</keepLog>
27+
<builtOn></builtOn>
28+
<workspace>/var/jenkins_home/workspace/downstream</workspace>
29+
<hudsonVersion>2.249</hudsonVersion>
30+
<scm class="hudson.scm.NullChangeLogParser"/>
31+
<culprits class="com.google.common.collect.EmptyImmutableSortedSet"/>
32+
</build>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version='1.1' encoding='UTF-8'?>
2+
<project>
3+
<actions/>
4+
<description></description>
5+
<keepDependencies>false</keepDependencies>
6+
<properties/>
7+
<scm class="hudson.scm.NullSCM"/>
8+
<canRoam>true</canRoam>
9+
<disabled>false</disabled>
10+
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
11+
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
12+
<authToken>test</authToken>
13+
<triggers/>
14+
<concurrentBuild>false</concurrentBuild>
15+
<builders/>
16+
<publishers/>
17+
<buildWrappers/>
18+
</project>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version='1.1' encoding='UTF-8'?>
2+
<build>
3+
<actions>
4+
<hudson.model.CauseAction>
5+
<causeBag class="linked-hash-map">
6+
<entry>
7+
<hudson.triggers.SCMTrigger_-SCMTriggerCause/>
8+
<int>1</int>
9+
</entry>
10+
</causeBag>
11+
</hudson.model.CauseAction>
12+
</actions>
13+
<queueId>5</queueId>
14+
<timestamp>1595937941553</timestamp>
15+
<startTime>1595937941557</startTime>
16+
<result>SUCCESS</result>
17+
<duration>2</duration>
18+
<charset>UTF-8</charset>
19+
<keepLog>false</keepLog>
20+
<builtOn></builtOn>
21+
<workspace>/var/jenkins_home/workspace/upstream</workspace>
22+
<hudsonVersion>2.249</hudsonVersion>
23+
<scm class="hudson.scm.NullChangeLogParser"/>
24+
<culprits class="com.google.common.collect.EmptyImmutableSortedSet"/>
25+
</build>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version='1.1' encoding='UTF-8'?>
2+
<project>
3+
<actions/>
4+
<description></description>
5+
<keepDependencies>false</keepDependencies>
6+
<properties/>
7+
<scm class="hudson.scm.NullSCM"/>
8+
<canRoam>true</canRoam>
9+
<disabled>false</disabled>
10+
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
11+
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
12+
<authToken>test</authToken>
13+
<triggers/>
14+
<concurrentBuild>false</concurrentBuild>
15+
<builders/>
16+
<publishers/>
17+
<buildWrappers/>
18+
</project>

0 commit comments

Comments
 (0)