camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Inflight and pending exchange in a route during shutdown
Date Mon, 06 Jun 2011 09:50:05 GMT
Try to create a small unit tests that shows the issue. Then we can use
that in the trunk source code to track down whats going on.


On Mon, Jun 6, 2011 at 11:46 AM, Xavier Coulon <xcoulon@gmail.com> wrote:
> Hello,
>
> I just switch back to Camel 2.6.0 and it works fine : no inflight pending
> exchange in the file validation route.
> BTW : the problem exists with the lastest release of Camel (2.7.2).
>
> Any idea of what I should look at in detail in the Validation component ?
>
> Thank you in advance
> Best regards,
> Xavier
>
> On Wed, Jun 1, 2011 at 10:05 PM, Xavier Coulon <xcoulon@gmail.com> wrote:
>
>> Hello,
>>
>> Ok, I realize than my previous post was very vague, so i'll try to give
>> more context information:
>>
>> The test class extends Spring 3's AbstractJUnit4SpringContextTests.
>> The test method is annotated with @Test, @DirtiesContext and
>> @Timed(millis=20000). This latter annotation can set the test to failed if
>> it took too much time.
>>
>> The @After method is as follow:
>>
>>         @After
>> public void stopAllContexts() throws Exception {
>> Collection<CamelContext> contexts =
>> applicationContext.getBeansOfType(CamelContext.class).values();
>>  for (CamelContext context : contexts) {
>> LOGGER.info("About to shutdown Context {} with {} inflight exchanges...",
>> context.getName(), context
>>  .getInflightRepository().size());
>> context.stop();
>> }
>>  }
>>
>>
>> Initially, I was using this method in conjunction with the @DirtiesContext
>> annotation to clean/restart the camel contexts (several in my application)
>> before each test. Currently, I have two test methods, but the second one is
>> annotated with @Ignore.
>>
>> The application uses Camel 2.7.1 with Java6. Eclipse Helios (the provided
>> JUnit test runner) vs Maven 3.0 with surefire (mvn clean test)
>>
>> The route that causes troubles is the following:
>>
>>
>> from("{{endpoint.phase1.file.incoming}}").routeId("stock.route.phase1.fileValidation")
>> .convertBodyTo(SAXSource.class)
>>  .log(LoggingLevel.INFO, "[Phase1] Starting validating file
>> '${header.CamelFileName}' (phase1)")
>> .to("{{endpoint.phase1.file.validation}}")
>>  .log(LoggingLevel.INFO, "[Phase1] File '${header.CamelFileName}'
>> validation done.")
>> .convertBodyTo(GenericFile.class).to("{{endpoint.phase1.file.splitting}}")
>>  .log(LoggingLevel.INFO, "[Phase1] Done with file
>> '${header.CamelFileName}' validation and splitting");
>>
>> with endpoint.phase1.file.incoming=file:D:/tmp/integration
>> and endpoint.phase1.file.validation=validator:xsd/my.xsd?useDom=false
>>
>> Basically, the route endpoint takes a file (GenericFile) that is converted
>> into a SAXSource to be validated against an XSD, then converted back into a
>> GenericFile to be stream/splitted later on a following route.
>>
>> Regards,
>> /Xavier
>>
>> On Wed, Jun 1, 2011 at 6:37 PM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>>
>>> On Wed, Jun 1, 2011 at 5:01 PM, Xavier Coulon <xcoulon@gmail.com> wrote:
>>> > Hello,
>>> >
>>> > I'm having an issue with the File Component in my test case. Running a
>>> test
>>> > from within Eclipse works fine, running the exact same test with Maven
>>> fails
>>> > because of a timeout I set on the test method.
>>> >
>>>
>>> What do you mean by timeout I set on the test method?
>>>
>>> And what version of Camel are you using?
>>>
>>> And how do you run it from Maven? And from Eclipse?
>>>
>>> And what does your route do.
>>>
>>>
>>>
>>> > On the Eclipse side, during the route with a file endpoint is shutdown
>>> with
>>> > the following messages:
>>> > ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy:suspendNow]
>>> > Suspending: Consumer[file://D:/tmp/integration]
>>> > [16:12:06,735][TRACE][Camel (context1) thread #18 -
>>> > ShutdownTask][org.apache.camel.util.ServiceHelper:suspendService]
>>> Suspending
>>> > service Consumer[file://D:/tmp/integration]
>>> > [16:12:06,735][DEBUG][Camel (context1) thread #18 -
>>> > ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy:suspendNow]
>>> > Suspend complete for: Consumer[file://D:/tmp/integration]
>>> > [16:12:06,735][ INFO][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileValidation suspended and shutdown
>>> deferred,
>>> > was consuming from: Endpoint[file://D:/tmp/integration]
>>> > [16:12:06,735][DEBUG][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.xml.aggregation preparing to shutdown.
>>> > [16:12:06,735][ INFO][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.xml.aggregation preparing to shutdown
>>> complete.
>>> > [16:12:06,735][DEBUG][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileSplitting preparing to shutdown.
>>> > [16:12:07,157][TRACE][Camel (context1) thread #6 -
>>> >
>>> file://D:/tmp/integration][org.apache.camel.impl.ScheduledPollConsumer:run]
>>> > Cannot start to poll: Endpoint[file://D:/tmp/integration] as its
>>> suspended
>>> > [16:12:07,251][ INFO][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileSplitting preparing to shutdown complete.
>>> > [16:12:07,251][DEBUG][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileValidation preparing to shutdown.
>>> > [16:12:07,251][ INFO][Camel (context1) thread #18 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileValidation preparing to shutdown complete.
>>> > [16:12:07,251][TRACE][Camel (context1) thread #18
>>> >
>>> > With Maven, I have the following messages:
>>> > [16:16:01,670][TRACE][Camel (context1) thread #19 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Shutting down route: stock.route.phase1.fileValidation with options
>>> > [Default,CompleteCurrentTaskOnly]
>>> > [16:16:01,670][TRACE][Camel (context1) thread #19 -
>>> > ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy:suspendNow]
>>> > Suspending: Consumer[file://D:/tmp/integration]
>>> > [16:16:01,670][TRACE][Camel (context1) thread #19 -
>>> > ShutdownTask][org.apache.camel.util.ServiceHelper:suspendService]
>>> Suspending
>>> > service Consumer[file://D:/tmp/integration]
>>> > [16:16:01,670][DEBUG][Camel (context1) thread #19 -
>>> > ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy:suspendNow]
>>> > Suspend complete for: Consumer[file://D:/tmp/integration]
>>> > [16:16:01,670][ INFO][Camel (context1) thread #19 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Route: stock.route.phase1.fileValidation suspended and shutdown
>>> deferred,
>>> > was consuming from: Endpoint[file://D:/tmp/integration]
>>> > [16:16:01,670][DEBUG][Camel (context1) thread #19 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > 1 inflight and pending exchanges for consumer:
>>> > Consumer[file://D:/tmp/integration]
>>> > [16:16:01,670][ INFO][Camel (context1) thread #19 -
>>> >
>>> ShutdownTask][org.apache.camel.impl.DefaultShutdownStrategy$ShutdownTask:run]
>>> > Waiting as there are still 1 inflight and pending exchanges to complete,
>>> > timeout in 300 seconds.
>>> >
>>> > and this lasts for 300s, until the shutdown is forced..
>>> >
>>> > The weird thing is that there should be only one exchange in this route,
>>> and
>>> > it was processed in other routes after this one...
>>> >
>>> > I don't know if it's related to the way tests are run with Maven, but is
>>> > there anything I could add to get rid of the stuck inflight exchange ?
>>> >
>>> > Thank you in advance
>>> > Regards,
>>> > --
>>> > Xavier
>>> >
>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> -----------------
>>> FuseSource
>>> Email: cibsen@fusesource.com
>>> Web: http://fusesource.com
>>> Twitter: davsclaus, fusenews
>>> Blog: http://davsclaus.blogspot.com/
>>> Author of Camel in Action: http://www.manning.com/ibsen/
>>>
>>
>>
>>
>> --
>> Xavier
>>
>
>
>
> --
> Xavier
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Mime
View raw message