Skip to content

Commit

Permalink
EventListener: Syncronyze the AbortJob and the add new scheduled job
Browse files Browse the repository at this point in the history
If lot of patches are sent the removing on the queue is not working and
job that must be aborted are not aborted. Suppose to have activated
abortTopic and we want to push:

patch A->B->C

We would like that only the last patch is build and not B and A

Jira-Id: JENKINS-70162
Jira-Id: JENKINS-72193
Jira-Id: JENKINS-71328
Jira-Id: JENKINS-70539
Jira-Id: JENKINS-69338
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
  • Loading branch information
panicking committed Feb 20, 2024
1 parent 0b104a8 commit 7fb4ee8
Showing 1 changed file with 30 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
Expand Down Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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);
}
}

Expand Down

0 comments on commit 7fb4ee8

Please sign in to comment.