Author: davsclaus
Date: Wed May 4 09:46:32 2011
New Revision: 1099382
URL: http://svn.apache.org/viewvc?rev=1099382&view=rev
Log:
Catching all throwables from timer task to be sure the jvm keep triggering in
case some uncaught exceptions would have been thrown and cause the thread to die
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java?rev=1099382&r1=1099381&r2=1099382&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java
Wed May 4 09:46:32 2011
@@ -50,15 +50,20 @@ public class TimerConsumer extends Defau
@Override
public void run() {
- long count = counter.incrementAndGet();
+ try {
+ long count = counter.incrementAndGet();
- boolean fire = endpoint.getRepeatCount() <= 0 || count <=
endpoint.getRepeatCount();
- if (fire) {
- sendTimerExchange(count);
- } else {
- // no need to fire anymore as we exceeded repeat count
- LOG.debug("Cancelling {} timer as repeat count limit
reached after {} counts.", endpoint.getTimerName(), endpoint.getRepeatCount());
- cancel();
+ boolean fire = endpoint.getRepeatCount() <= 0 || count <=
endpoint.getRepeatCount();
+ if (fire) {
+ sendTimerExchange(count);
+ } else {
+ // no need to fire anymore as we exceeded repeat count
+ LOG.debug("Cancelling {} timer as repeat count limit
reached after {} counts.", endpoint.getTimerName(), endpoint.getRepeatCount());
+ cancel();
+ }
+ } catch (Throwable e) {
+ // catch all to avoid the JVM closing the thread and not
firing again
+ LOG.warn("Error processing exchange. This exception will
be ignored, to let the timer be able to trigger again.", e);
}
}
};