Hi We have an issue when using more than one LevelDB aggregator in routes when running in Tomcat as a war. When the application is restarted we get the following exception:
2019-05-09 15:52:21,296 [localhost-startStop-3] o.s.b.SpringApplication ERROR - Application run failed(858) org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route MIFIR-TRADES: Route(MIFIR-TRADES)[[From[seda:mifir]] -> [Aggregate[true ->... because of Error opening LevelDB with file mifir\data\jmstrans.dat at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1826) at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:136) at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:174) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:402) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:359) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:896) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:552) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:157) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:137) at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:91) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:171) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5196) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:988) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1860) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route MIFIR-TRADES: Route(MIFIR-TRADES)[[From[seda:mifir]] -> [Aggregate[true ->... because of Error opening LevelDB with file mifir\data\jmstrans.dat at org.apache.camel.impl.RouteService.warmUp(RouteService.java:147) at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:3953) at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3860) at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3646) at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3489) at org.apache.camel.impl.DefaultCamelContext$4.call(DefaultCamelContext.java:3248) at org.apache.camel.impl.DefaultCamelContext$4.call(DefaultCamelContext.java:3244) at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:3267) at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:3244) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:72) at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:3160) at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:133) ... 29 common frames omitted Caused by: java.lang.RuntimeException: Error opening LevelDB with file mifir\data\jmstrans.dat at org.apache.camel.component.leveldb.LevelDBFile.start(LevelDBFile.java:184) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.component.leveldb.LevelDBAggregationRepository.doStart(LevelDBAggregationRepository.java:412) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:72) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90) at org.apache.camel.processor.aggregate.AggregateProcessor.doStart(AggregateProcessor.java:1384) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:72) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90) at org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1484) at org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:44) at org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:31) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:160) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:72) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104) at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90) at org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:80) at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:72) at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75) at org.apache.camel.impl.RouteService.startChildService(RouteService.java:370) at org.apache.camel.impl.RouteService.doWarmUp(RouteService.java:196) at org.apache.camel.impl.RouteService.warmUp(RouteService.java:145) ... 40 common frames omitted Caused by: org.fusesource.leveldbjni.internal.NativeDB$DBException: IO error: D:\apache-tomcat-8.5.23\mifir\data\jmstrans.dat\MANIFEST-000025: The handle is invalid. at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200) at org.fusesource.leveldbjni.internal.NativeDB.open(NativeDB.java:218) at org.fusesource.leveldbjni.JniDBFactory.open(JniDBFactory.java:168) at org.apache.camel.component.leveldb.LevelDBFile.start(LevelDBFile.java:182) ... 72 common frames omitted 2019-05-09 15:52:21,312 [localhost-startStop-3] s.t.m.MainApplication INFO - So long and thanks for all the fish(106) The exceptions is NOT thrown upon startup of tomcat. To resolve this we need to restart Tomcat. We have seen this in our IDEA as well when restarting application but not as frequent as when on tomcat. We know the reason since we’ve added one more aggregator in another route and haven’t had this behaviour before. I have tried to investigate this but failed. I think the problem lies deeper than the source code of camel… The two aggregators are separate declared and using its own storage file.
