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