You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/08/27 11:09:51 UTC

svn commit: r1377608 - /camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java

Author: davsclaus
Date: Mon Aug 27 09:09:51 2012
New Revision: 1377608

URL: http://svn.apache.org/viewvc?rev=1377608&view=rev
Log:
CAMEL-5542: Timer component. Avoid firing during CamelContext is starting.

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=1377608&r1=1377607&r2=1377608&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 Mon Aug 27 09:09:51 2012
@@ -89,8 +89,9 @@ public class TimerConsumer extends Defau
      * Whether the timer task is allow to run or not
      */
     protected boolean isTaskRunAllowed() {
-        // only allow running the timer task if we can run and are not suspended
-        return isRunAllowed() && !isSuspended();
+        // only allow running the timer task if we can run and are not suspended,
+        // and CamelContext must have been fully started
+        return endpoint.getCamelContext().getStatus().isStarted() && isRunAllowed() && !isSuspended();
     }
 
     protected void configureTask(TimerTask task, Timer timer) {
@@ -132,12 +133,12 @@ public class TimerConsumer extends Defau
         LOG.trace("Timer {} is firing #{} count", endpoint.getTimerName(), counter);
         try {
             getProcessor().process(exchange);
-
-            // log exception if an exception occurred and was not handled
-            if (exchange.getException() != null) {
-                getExceptionHandler().handleException("Error processing exchange", exchange, exchange.getException());
-            }
         } catch (Exception e) {
+            exchange.setException(e);
+        }
+
+        // handle any thrown exception
+        if (exchange.getException() != null) {
             getExceptionHandler().handleException("Error processing exchange", exchange, exchange.getException());
         }
     }



Re: svn commit: r1377608 - /camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java

Posted by Christian Müller <ch...@gmail.com>.
I fixed this issue by setting the option "delay=100" which makes sure the
first execution happens after 100ms. With the default, "delay=0", the first
execution is skipped some time by the TimerQueue.

Best,
Christian

On Sat, Sep 8, 2012 at 2:05 PM, Christian Müller <
christian.mueller@gmail.com> wrote:

> Claus, this commit breaks the AggregatorTimerAndTracerTest on CI server
> and also my machine.
> Could you please have a look at it.
>
> [1]
> https://builds.apache.org/view/A-F/view/Camel/job/Camel.2.10.x.fulltest/32/org.apache.camel$camel-core/testReport/org.apache.camel.processor.aggregator/AggregatorTimerAndTracerTest/testAggregatorTimerAndTracer/
>
> Best,
> Christian
>
>
> On Mon, Aug 27, 2012 at 11:09 AM, <da...@apache.org> wrote:
>
>> Author: davsclaus
>> Date: Mon Aug 27 09:09:51 2012
>> New Revision: 1377608
>>
>> URL: http://svn.apache.org/viewvc?rev=1377608&view=rev
>> Log:
>> CAMEL-5542: Timer component. Avoid firing during CamelContext is starting.
>>
>> 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=1377608&r1=1377607&r2=1377608&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
>> Mon Aug 27 09:09:51 2012
>> @@ -89,8 +89,9 @@ public class TimerConsumer extends Defau
>>       * Whether the timer task is allow to run or not
>>       */
>>      protected boolean isTaskRunAllowed() {
>> -        // only allow running the timer task if we can run and are not
>> suspended
>> -        return isRunAllowed() && !isSuspended();
>> +        // only allow running the timer task if we can run and are not
>> suspended,
>> +        // and CamelContext must have been fully started
>> +        return endpoint.getCamelContext().getStatus().isStarted() &&
>> isRunAllowed() && !isSuspended();
>>      }
>>
>>      protected void configureTask(TimerTask task, Timer timer) {
>> @@ -132,12 +133,12 @@ public class TimerConsumer extends Defau
>>          LOG.trace("Timer {} is firing #{} count",
>> endpoint.getTimerName(), counter);
>>          try {
>>              getProcessor().process(exchange);
>> -
>> -            // log exception if an exception occurred and was not handled
>> -            if (exchange.getException() != null) {
>> -                getExceptionHandler().handleException("Error processing
>> exchange", exchange, exchange.getException());
>> -            }
>>          } catch (Exception e) {
>> +            exchange.setException(e);
>> +        }
>> +
>> +        // handle any thrown exception
>> +        if (exchange.getException() != null) {
>>              getExceptionHandler().handleException("Error processing
>> exchange", exchange, exchange.getException());
>>          }
>>      }
>>
>>
>>
>
>
> --
>
>
>


--

Re: svn commit: r1377608 - /camel/trunk/camel-core/src/main/java/org/apache/camel/component/timer/TimerConsumer.java

Posted by Christian Müller <ch...@gmail.com>.
Claus, this commit breaks the AggregatorTimerAndTracerTest on CI server and
also my machine.
Could you please have a look at it.

[1]
https://builds.apache.org/view/A-F/view/Camel/job/Camel.2.10.x.fulltest/32/org.apache.camel$camel-core/testReport/org.apache.camel.processor.aggregator/AggregatorTimerAndTracerTest/testAggregatorTimerAndTracer/

Best,
Christian

On Mon, Aug 27, 2012 at 11:09 AM, <da...@apache.org> wrote:

> Author: davsclaus
> Date: Mon Aug 27 09:09:51 2012
> New Revision: 1377608
>
> URL: http://svn.apache.org/viewvc?rev=1377608&view=rev
> Log:
> CAMEL-5542: Timer component. Avoid firing during CamelContext is starting.
>
> 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=1377608&r1=1377607&r2=1377608&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
> Mon Aug 27 09:09:51 2012
> @@ -89,8 +89,9 @@ public class TimerConsumer extends Defau
>       * Whether the timer task is allow to run or not
>       */
>      protected boolean isTaskRunAllowed() {
> -        // only allow running the timer task if we can run and are not
> suspended
> -        return isRunAllowed() && !isSuspended();
> +        // only allow running the timer task if we can run and are not
> suspended,
> +        // and CamelContext must have been fully started
> +        return endpoint.getCamelContext().getStatus().isStarted() &&
> isRunAllowed() && !isSuspended();
>      }
>
>      protected void configureTask(TimerTask task, Timer timer) {
> @@ -132,12 +133,12 @@ public class TimerConsumer extends Defau
>          LOG.trace("Timer {} is firing #{} count",
> endpoint.getTimerName(), counter);
>          try {
>              getProcessor().process(exchange);
> -
> -            // log exception if an exception occurred and was not handled
> -            if (exchange.getException() != null) {
> -                getExceptionHandler().handleException("Error processing
> exchange", exchange, exchange.getException());
> -            }
>          } catch (Exception e) {
> +            exchange.setException(e);
> +        }
> +
> +        // handle any thrown exception
> +        if (exchange.getException() != null) {
>              getExceptionHandler().handleException("Error processing
> exchange", exchange, exchange.getException());
>          }
>      }
>
>
>


--