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 <xcou...@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.ib...@gmail.com> wrote:
>
>> On Wed, Jun 1, 2011 at 5:01 PM, Xavier Coulon <xcou...@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: cib...@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

Reply via email to