diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java index 9bdedb242..36a48e6db 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java @@ -124,15 +124,17 @@ public void gerritEvent(GerritEvent event) { } if (event instanceof GerritTriggeredEvent) { GerritTriggeredEvent triggeredEvent = (GerritTriggeredEvent)event; - if (t.isInteresting(triggeredEvent)) { - logger.trace("The event is interesting."); - abortBuild(t, triggeredEvent); - if (t.isOnlyAbortRunningBuild(triggeredEvent)) { - logger.trace("Just aborting build based on event not scheduling new one."); - return; + synchronized (this) { + if (t.isInteresting(triggeredEvent)) { + logger.trace("The event is interesting."); + abortBuild(t, triggeredEvent); + if (t.isOnlyAbortRunningBuild(triggeredEvent)) { + logger.trace("Just aborting build based on event not scheduling new one."); + return; + } + notifyOnTriggered(t, triggeredEvent); + schedule(t, new GerritCause(triggeredEvent, t.isSilentMode()), triggeredEvent); } - notifyOnTriggered(t, triggeredEvent); - schedule(t, new GerritCause(triggeredEvent, t.isSilentMode()), triggeredEvent); } } } @@ -162,15 +164,17 @@ public void gerritEvent(ManualPatchsetCreated event) { // to just return now without processing the event. return; } - if (t.isInteresting(event)) { - logger.trace("The event is interesting."); - abortBuild(t, event); - if (t.isOnlyAbortRunningBuild(event)) { - logger.trace("Just aborting build based on event not scheduling new one."); - return; + synchronized (this) { + if (t.isInteresting(event)) { + logger.trace("The event is interesting."); + abortBuild(t, event); + if (t.isOnlyAbortRunningBuild(event)) { + logger.trace("Just aborting build based on event not scheduling new one."); + return; + } + notifyOnTriggered(t, event); + schedule(t, new GerritManualCause(event, t.isSilentMode()), event); } - notifyOnTriggered(t, event); - schedule(t, new GerritManualCause(event, t.isSilentMode()), event); } } @@ -206,15 +210,17 @@ public void gerritEvent(CommentAdded event) { // to just return now without processing the event. return; } - if (t.isInteresting(event) && t.commentAddedMatch(event)) { - logger.trace("The event is interesting."); - abortBuild(t, event); - if (t.isOnlyAbortRunningBuild(event)) { - logger.trace("Just aborting build based on event not scheduling new one."); - return; + synchronized (this) { + if (t.isInteresting(event) && t.commentAddedMatch(event)) { + logger.trace("The event is interesting."); + abortBuild(t, event); + if (t.isOnlyAbortRunningBuild(event)) { + logger.trace("Just aborting build based on event not scheduling new one."); + return; + } + notifyOnTriggered(t, event); + schedule(t, new GerritCause(event, t.isSilentMode()), event); } - notifyOnTriggered(t, event); - schedule(t, new GerritCause(event, t.isSilentMode()), event); } } diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/RunningJobs.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/RunningJobs.java index d9eb9b93a..2d3aaf741 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/RunningJobs.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/RunningJobs.java @@ -13,6 +13,7 @@ import hudson.model.Computer; import hudson.model.Executor; import hudson.model.Item; +import hudson.model.Job; import hudson.model.Queue; import hudson.model.Result; import hudson.model.Run; @@ -242,7 +243,8 @@ private void cancelMatchingJobs(GerritTriggeredEvent event, String jobName, Caus List itemsInQueue = Queue.getInstance().getItems((Queue.Task)getJob()); for (Queue.Item item : itemsInQueue) { if (checkCausedByGerrit(event, item.getCauses())) { - if (jobName.equals(item.task.getName())) { + Job tJob = (Job)item.task; + if (jobName.equals(tJob.getFullName())) { Queue.getInstance().cancel(item); } }