Calling cancel on a Future returned by a TaskScheduler works reliably now
Issue: SPR-9821
This commit is contained in:
parent
7fc16298e6
commit
0d88c73523
|
|
@ -108,21 +108,27 @@ class ReschedulingRunnable extends DelegatingErrorHandlingRunnable implements Sc
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object get() throws InterruptedException, ExecutionException {
|
public Object get() throws InterruptedException, ExecutionException {
|
||||||
|
ScheduledFuture curr;
|
||||||
synchronized (this.triggerContextMonitor) {
|
synchronized (this.triggerContextMonitor) {
|
||||||
return this.currentFuture.get();
|
curr = this.currentFuture;
|
||||||
}
|
}
|
||||||
|
return curr.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
|
public Object get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
|
||||||
|
ScheduledFuture curr;
|
||||||
synchronized (this.triggerContextMonitor) {
|
synchronized (this.triggerContextMonitor) {
|
||||||
return this.currentFuture.get(timeout, unit);
|
curr = this.currentFuture;
|
||||||
}
|
}
|
||||||
|
return curr.get(timeout, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getDelay(TimeUnit unit) {
|
public long getDelay(TimeUnit unit) {
|
||||||
|
ScheduledFuture curr;
|
||||||
synchronized (this.triggerContextMonitor) {
|
synchronized (this.triggerContextMonitor) {
|
||||||
return this.currentFuture.getDelay(unit);
|
curr = this.currentFuture;
|
||||||
}
|
}
|
||||||
|
return curr.getDelay(unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int compareTo(Delayed other) {
|
public int compareTo(Delayed other) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue