From 624bda4695d16ec90bdb4e71b400247af60128f1 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Fri, 22 Mar 2013 08:12:57 +0100 Subject: [PATCH] Make sure cancelled scheduled tasks will not run again if cancelled before --- .../concurrent/SingleThreadEventExecutor.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java index 2aabc15d81..416204cc4c 100644 --- a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java +++ b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java @@ -800,16 +800,19 @@ public abstract class SingleThreadEventExecutor extends AbstractEventExecutor { setSuccessInternal(result); } } else { - task.call(); - if (!executor().isShutdown()) { - long p = periodNanos; - if (p > 0) { - deadlineNanos += p; - } else { - deadlineNanos = nanoTime() - p; - } - if (!isDone()) { - executor().delayedTaskQueue.add(this); + // check if is done as it may was cancelled + if (!isDone()) { + task.call(); + if (!executor().isShutdown()) { + long p = periodNanos; + if (p > 0) { + deadlineNanos += p; + } else { + deadlineNanos = nanoTime() - p; + } + if (!isDone()) { + executor().delayedTaskQueue.add(this); + } } } }