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 8d70f65e6..d9eb9b93a 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 @@ -191,10 +191,19 @@ private boolean shouldIgnoreEvent(ChangeBasedEvent event, return true; } - boolean shouldCancelPatchsetNumber = policy.isAbortNewPatchsets() - || Integer.parseInt(runningChangeBasedEvent.getPatchSet().getNumber()) + // events of "type": "topic-changed" are not required to set a PatchSet + boolean hasPatchSets = runningChangeBasedEvent.getPatchSet() != null + && event.getPatchSet() != null; + + boolean hasPatchNumbers = hasPatchSets && runningChangeBasedEvent.getPatchSet().getNumber() != null + && event.getPatchSet().getNumber() != null; + + boolean isOldPatch = hasPatchSets && hasPatchNumbers + && Integer.parseInt(runningChangeBasedEvent.getPatchSet().getNumber()) < Integer.parseInt(event.getPatchSet().getNumber()); + boolean shouldCancelPatchsetNumber = policy.isAbortNewPatchsets() || isOldPatch; + boolean isAbortAbandonedPatchset = policy.isAbortAbandonedPatchsets() && (event instanceof ChangeAbandoned); @@ -304,7 +313,7 @@ public void add(ChangeBasedEvent event) { * @return true if event was still running. */ public boolean remove(ChangeBasedEvent event) { - logger.debug("Removing future job " + event.getPatchSet().getNumber()); + logger.debug("Removing future job associated with " + event.getChange().getId()); return runningJobs.remove(event); } }