[FIXED JENKINS-25314]

The original fix was made in 0c3d67097a.
In this fix, I'm also moving the code that creates LeftItem.

It makes no sense that there's Item.cancel(Queue) and Queue.cancel(Item)
and they do different things!
This commit is contained in:
Kohsuke Kawaguchi committed 2014-10-26 15:20:38 -07:00
1 parent b4a9671c27
commit 9b36e2ae8d
2 files changed
+12 -7

No files matched your search

+3
View File
@@ -55,6 +55,9 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class=bug>
Queue didn't always leave a trail for cancelled items properly
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-25314">issue 25314</a>)
<li class=bug>
JNA update for deprecated JNA-POSIX library.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-24527">issue 24527</a>)
+9 -7
View File
@@ -658,12 +658,7 @@ public class Queue extends ResourceController implements Saveable {
public synchronized boolean cancel(Item item) {
LOGGER.log(Level.FINE, "Cancelling {0} item#{1}", new Object[] {item.task, item.id});
boolean r = item.cancel(this);
LeftItem li = new LeftItem(item);
li.enter(this);
return r;
return item.cancel(this);
}
/**
@@ -1588,10 +1583,17 @@ public class Queue extends ResourceController implements Saveable {
/**
* Cancels this item, which updates {@link #future} to notify the listener, and
* also leaves the queue.
*
* @return true
* if the item was successfully cancelled.
*/
/*package*/ boolean cancel(Queue q) {
boolean r = leave(q);
if (r) future.setAsCancelled();
if (r) {
future.setAsCancelled();
LeftItem li = new LeftItem(this);
li.enter(q);
}
return r;
}