Hi Camel users I am trying to recover data from a Camel aggregator persistent hawtdb repository (Camel 2.9.x). The aggregator was killed unexpectedly because of an out-of-memory-error.
I wrote a small Java class that opens the hawtdb file, creates a HawtDBAggregationRepository instance that uses the file and tried to get the index keys and aggregations from it. I was able to get almost all aggregations from it, only two of them throw the exception below when I try to access them. Can I access them in another way to recover the aggregated data? Thanks for any help Stephan WARN | HawtDBFile | Error executing work Getting key [7601003010220_XML400]. Will do rollback. org.fusesource.hawtdb.api.IndexException: java.io.EOFException at org.fusesource.hawtdb.api.AbstractStreamPagedAccessor.load(AbstractStreamPagedAccessor.java:66) at org.fusesource.hawtdb.internal.index.BTreeIndex.loadNode(BTreeIndex.java:238) at org.fusesource.hawtdb.internal.index.BTreeNode.getChild(BTreeNode.java:261) at org.fusesource.hawtdb.internal.index.BTreeNode.getLeafNode(BTreeNode.java:772) at org.fusesource.hawtdb.internal.index.BTreeNode.get(BTreeNode.java:652) at org.fusesource.hawtdb.internal.index.BTreeIndex.get(BTreeIndex.java:85) at org.apache.camel.component.hawtdb.HawtDBAggregationRepository$2.execute(HawtDBAggregationRepository.java:150) at org.apache.camel.component.hawtdb.HawtDBAggregationRepository$2.execute(HawtDBAggregationRepository.java:144) at org.apache.camel.component.hawtdb.HawtDBFile.doExecute(HawtDBFile.java:165) at org.apache.camel.component.hawtdb.HawtDBFile.execute(HawtDBFile.java:119) at org.apache.camel.component.hawtdb.HawtDBAggregationRepository.get(HawtDBAggregationRepository.java:144) at ch.visana.ke.concierge.VisanaHawtDbRecovery.readExchangeByKeyFromRepository(VisanaHawtDbRecovery.java:81) at ch.visana.ke.concierge.VisanaHawtDbRecovery.testGetAggregationExchangeByKey(VisanaHawtDbRecovery.java:70) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:48) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.io.EOFException at org.fusesource.hawtdb.internal.page.ExtentInputStream.read(ExtentInputStream.java:80) at java.io.DataInputStream.readFully(DataInputStream.java:178) at java.io.DataInputStream.readFully(DataInputStream.java:152) at org.fusesource.hawtbuf.codec.AbstractBufferCodec.decode(AbstractBufferCodec.java:40) at org.fusesource.hawtbuf.codec.AbstractBufferCodec.decode(AbstractBufferCodec.java:30) at org.fusesource.hawtdb.internal.index.BTreeNode.read(BTreeNode.java:207) at org.fusesource.hawtdb.internal.index.BTreeNode$DataPagedAccessor.decode(BTreeNode.java:228) at org.fusesource.hawtdb.internal.index.BTreeNode$DataPagedAccessor.decode(BTreeNode.java:214) at org.fusesource.hawtdb.api.AbstractStreamPagedAccessor.load(AbstractStreamPagedAccessor.java:64) ... 38 more