Skip to content

Commit

Permalink
[FIXED JENKINS-27549] log job full name and catch Throwable (+1 squas…
Browse files Browse the repository at this point in the history
…hed commit)

Squashed commits:
[73308b5] [FIXED JENKINS-27549] job loading can be broken by a NPE in a build trigger

(cherry picked from commit 4c0d3ac)
  • Loading branch information
ydubreuil authored and olivergondza committed Jun 8, 2015
1 parent b8ce8da commit acf716a
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
6 changes: 5 additions & 1 deletion core/src/main/java/hudson/model/AbstractProject.java
Expand Up @@ -323,7 +323,11 @@ public void onLoad(ItemGroup<? extends Item> parent, String name) throws IOExcep
builds = buildMixIn.getRunMap();
triggers().setOwner(this);
for (Trigger t : triggers()) {
t.start(this, Items.currentlyUpdatingByXml());
try {
t.start(this, Items.currentlyUpdatingByXml());
} catch (Throwable e) {
LOGGER.log(Level.WARNING, "could not start trigger while loading project '" + getFullName() + "'", e);
}
}
if(scm==null)
scm = new NullSCM(); // perhaps it was pointing to a plugin that no longer exists.
Expand Down
34 changes: 34 additions & 0 deletions test/src/test/groovy/hudson/model/AbstractProjectTest.groovy
Expand Up @@ -48,6 +48,7 @@ import hudson.Util;
import hudson.tasks.ArtifactArchiver
import hudson.triggers.SCMTrigger;
import hudson.triggers.TimerTrigger
import hudson.triggers.Trigger
import hudson.triggers.TriggerDescriptor;
import hudson.util.StreamTaskListener;
import hudson.util.OneShotEvent
Expand All @@ -58,6 +59,7 @@ import org.jvnet.hudson.test.HudsonTestCase
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.MemoryAssert
import org.jvnet.hudson.test.SequenceLock;
import org.jvnet.hudson.test.TestExtension;
import org.jvnet.hudson.test.recipes.PresetData;
import org.jvnet.hudson.test.recipes.PresetData.DataSet
import org.apache.commons.io.FileUtils;
Expand Down Expand Up @@ -592,4 +594,36 @@ public class AbstractProjectTest extends HudsonTestCase {
}
return con
}

@Issue("JENKINS-27549")
public void testLoadingWithNPEOnTriggerStart() {
AbstractProject project = jenkins.createProjectFromXML("foo", getClass().getResourceAsStream("AbstractProjectTest/npeTrigger.xml"))

assert project.triggers().size() == 1
}

static class MockBuildTriggerThrowsNPEOnStart<Item> extends Trigger {
@Override
public void start(hudson.model.Item project, boolean newInstance) { throw new NullPointerException(); }

@Override
public TriggerDescriptor getDescriptor() {
return DESCRIPTOR;
}

public static final TriggerDescriptor DESCRIPTOR = new DescriptorImpl()

@TestExtension("testLoadingWithNPEOnTriggerStart")
static class DescriptorImpl extends TriggerDescriptor {

public boolean isApplicable(hudson.model.Item item) {
return false;
}

@Override
String getDisplayName() {
return "test";
}
}
}
}
@@ -0,0 +1,8 @@
<?xml version='1.0' encoding='UTF-8'?>
<project>
<triggers>
<hudson.model.AbstractProjectTest_-MockBuildTriggerThrowsNPEOnStart>
<spec></spec>
</hudson.model.AbstractProjectTest_-MockBuildTriggerThrowsNPEOnStart>
</triggers>
</project>

0 comments on commit acf716a

Please sign in to comment.