CAMEL-7885: Restarting a timer endpoint may not trigger at expected time the 
first time


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/920cb28b
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/920cb28b
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/920cb28b

Branch: refs/heads/camel-2.14.x
Commit: 920cb28b16cb71882516463adcf16a88fe23a60b
Parents: 9b6d200
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed Oct 1 11:22:39 2014 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Oct 1 11:23:00 2014 +0200

----------------------------------------------------------------------
 .../org/apache/camel/component/timer/TimerComponent.java     | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/920cb28b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java 
b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
index ec67f01..6c6ab01 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/timer/TimerComponent.java
@@ -35,7 +35,7 @@ import org.apache.camel.impl.UriEndpointComponent;
  */
 public class TimerComponent extends UriEndpointComponent {
     private final Map<String, Timer> timers = new HashMap<String, Timer>();
-    private final Map<String, AtomicInteger> refCounts = new HashMap<>();
+    private final Map<String, AtomicInteger> refCounts = new HashMap<String, 
AtomicInteger>();
 
     public TimerComponent() {
         super(TimerEndpoint.class);
@@ -60,7 +60,9 @@ public class TimerComponent extends UriEndpointComponent {
             } else {
                 // increase reference counter
                 AtomicInteger counter = refCounts.get(key);
-                counter.incrementAndGet();
+                if (counter != null) {
+                    counter.incrementAndGet();
+                }
             }
         }
         return answer;
@@ -75,7 +77,7 @@ public class TimerComponent extends UriEndpointComponent {
         synchronized (timers) {
             // decrease reference counter
             AtomicInteger counter = refCounts.get(key);
-            if (counter.decrementAndGet() <= 0) {
+            if (counter != null && counter.decrementAndGet() <= 0) {
                 refCounts.remove(key);
                 // remove timer as its no longer in use
                 Timer timer = timers.remove(key);

Reply via email to