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.

Reply via email to