提交 23d800cf 编写于 作者: D Daniel Beck

Merge pull request #1617 from KostyaSha/cronFix

Don't run trigger for disabled/copied projects
...@@ -324,11 +324,13 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A ...@@ -324,11 +324,13 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
buildMixIn.onLoad(parent, name); buildMixIn.onLoad(parent, name);
builds = buildMixIn.getRunMap(); builds = buildMixIn.getRunMap();
triggers().setOwner(this); triggers().setOwner(this);
for (Trigger t : triggers()) { if (isBuildable()) {
try { for (Trigger t : triggers()) {
t.start(this, Items.currentlyUpdatingByXml()); try {
} catch (Throwable e) { t.start(this, Items.currentlyUpdatingByXml());
LOGGER.log(Level.WARNING, "could not start trigger while loading project '" + getFullName() + "'", e); } catch (Throwable e) {
LOGGER.log(Level.WARNING, "could not start trigger while loading project '" + getFullName() + "'", e);
}
} }
} }
if(scm==null) if(scm==null)
...@@ -1879,8 +1881,10 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A ...@@ -1879,8 +1881,10 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
for (Trigger t : triggers()) for (Trigger t : triggers())
t.stop(); t.stop();
triggers.replaceBy(buildDescribable(req, Trigger.for_(this))); triggers.replaceBy(buildDescribable(req, Trigger.for_(this)));
for (Trigger t : triggers()) if (isBuildable()) {
t.start(this,true); for (Trigger t : triggers())
t.start(this, true);
}
} }
/** /**
......
...@@ -99,6 +99,8 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>> ...@@ -99,6 +99,8 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>>
* *
* This method is invoked when {@link #Trigger(String)} is used * This method is invoked when {@link #Trigger(String)} is used
* to create an instance, and the crontab matches the current time. * to create an instance, and the crontab matches the current time.
* <p>
* Maybe run even before {@link #start(hudson.model.Item, boolean)}, prepare for it.
*/ */
public void run() {} public void run() {}
...@@ -241,6 +243,10 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>> ...@@ -241,6 +243,10 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>>
// FIXME allow to set a global crontab spec // FIXME allow to set a global crontab spec
previousSynchronousPolling = scmd.getExecutor().submit(new DependencyRunner(new ProjectRunnable() { previousSynchronousPolling = scmd.getExecutor().submit(new DependencyRunner(new ProjectRunnable() {
public void run(AbstractProject p) { public void run(AbstractProject p) {
if (!p.isBuildable()) {
return; //skip disabled/copied project
}
for (Trigger t : (Collection<Trigger>) p.getTriggers().values()) { for (Trigger t : (Collection<Trigger>) p.getTriggers().values()) {
if (t instanceof SCMTrigger) { if (t instanceof SCMTrigger) {
LOGGER.fine("synchronously triggering SCMTrigger for project " + t.job.getName()); LOGGER.fine("synchronously triggering SCMTrigger for project " + t.job.getName());
...@@ -256,6 +262,12 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>> ...@@ -256,6 +262,12 @@ public abstract class Trigger<J extends Item> implements Describable<Trigger<?>>
// Process all triggers, except SCMTriggers when synchronousPolling is set // Process all triggers, except SCMTriggers when synchronousPolling is set
for (ParameterizedJobMixIn.ParameterizedJob p : inst.getAllItems(ParameterizedJobMixIn.ParameterizedJob.class)) { for (ParameterizedJobMixIn.ParameterizedJob p : inst.getAllItems(ParameterizedJobMixIn.ParameterizedJob.class)) {
if (p instanceof AbstractProject<?, ?>) {
if (!((AbstractProject) p).isBuildable()) {
continue; // skip disabled/copied project
}
}
for (Trigger t : p.getTriggers().values()) { for (Trigger t : p.getTriggers().values()) {
if (! (t instanceof SCMTrigger && scmd.synchronousPolling)) { if (! (t instanceof SCMTrigger && scmd.synchronousPolling)) {
LOGGER.log(Level.FINE, "cron checking {0} with spec ‘{1}’", new Object[] {p, t.spec.trim()}); LOGGER.log(Level.FINE, "cron checking {0} with spec ‘{1}’", new Object[] {p, t.spec.trim()});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册