提交 acf716af 编写于 作者: Y Yoann Dubreuil 提交者: Oliver Gondža

[FIXED JENKINS-27549] log job full name and catch Throwable (+1 squashed commit)

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

(cherry picked from commit 4c0d3ac6)
上级 b8ce8da7
......@@ -323,7 +323,11 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
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.
......
......@@ -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
......@@ -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;
......@@ -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";
}
}
}
}
<?xml version='1.0' encoding='UTF-8'?>
<project>
<triggers>
<hudson.model.AbstractProjectTest_-MockBuildTriggerThrowsNPEOnStart>
<spec></spec>
</hudson.model.AbstractProjectTest_-MockBuildTriggerThrowsNPEOnStart>
</triggers>
</project>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册