Hello,

[Still working on the unit tests...]

Here are some messages I get in the console during a test that reads 5K
lines: 

Route: route1 suspended and shutdown deferred, was consuming from:
Endpoint[file:///D:/tmp/data]
10:18:37.880 [Camel Thread 20 - ShutdownTask] INFO 
o.a.c.impl.DefaultShutdownStrategy - Waiting as there are still 2613
inflight and pending exchanges to complete before we can shutdown
...
10:18:47.326 [Camel Thread 20 - ShutdownTask] INFO 
o.a.c.impl.DefaultShutdownStrategy - Waiting as there are still 342 inflight
and pending exchanges to complete before we can shutdown
10:18:47.888 [Camel Thread 20 - ShutdownTask] WARN 
o.a.c.impl.DefaultShutdownStrategy - Interrupted while waiting during
graceful shutdown, will force shutdown now.
10:18:47.903 [main] WARN  o.a.c.impl.DefaultShutdownStrategy - Timeout
occurred. Now forcing the routes to be shutdown now.

As you can see, the graceful shutdown times out after 10s, even though there
are still 1922 inflight and pending exchanges to complete... In this
particular case, the shutdown is forced and the assertions fail.


In another run of the test, I can the following error : 

10:02:11.973 [main] WARN  o.a.c.impl.DefaultInflightRepository - Shutting
down while there are still 4 in flight exchanges.
10:02:11.973 [main] INFO  o.a.camel.impl.DefaultCamelContext - Uptime:
21.179 seconds
10:02:11.973 [main] INFO  o.a.camel.impl.DefaultCamelContext - Apache Camel
2.4.0-fuse-02-00 (CamelContext: camelContext) is shutdown in 10.051 seconds
10:02:11.973 [Camel Thread 20 - ShutdownTask] INFO 
o.a.c.impl.DefaultShutdownStrategy - Route: route1 shutdown complete.
10:02:12.020 [Camel Thread 2 - seda://dataintegration.filtered.elements]
ERROR o.a.c.component.seda.SedaConsumer - Error processing exchange.
Exchange[Message: [{...}]]. Caused by:
[java.util.concurrent.RejectedExecutionException - null]
java.util.concurrent.RejectedExecutionException: null
        at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:216)
~[camel-core-2.4.0-fuse-02-00.jar:2.4.0-fuse-02-00]
        at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:202)
~[camel-core-2.4.0-fuse-02-00.jar:2.4.0-fuse-02-00]
        at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:256)
~[camel-core-2.4.0-fuse-02-00.jar:2.4.0-fuse-02-00]

>From my understanding, the file consumer is still active. How can I change
the shutdown strategy to be sure all lines of the input file are consumed ? 

Using the following route configuration :
        from("file:/D:/tmp/data")
        .shutdownRunningTask(ShutdownRunningTask.CompleteAllTasks)
        .to("direct:incoming.files");

        // split each line as a message
        from("direct:incoming.files")
                .shutdownRunningTask(ShutdownRunningTask.CompleteAllTasks)
                .split(body().tokenize("\n"))
                .to("seda:dataintegration.incoming.elements");

does not fix the problem. The 10s timeout still occurs... 

Is there any other way that adding a Thread.sleep() ? I'm not happy with
that : it is not warranted to work on any machine (slower machines may need
more time), etc...

Thank you in advance.
Best regards,
Xavier
-- 
View this message in context: 
http://camel.465427.n5.nabble.com/ETL-how-to-monitor-the-end-of-processing-tp3374562p3375597.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to