Hi Camel users

I am testing LevelDB as repository for the aggregator component. After
reading the docs about the "sync" flag, I am unsure if I need to set it or
not.

Let's say my Java process with the Camel aggregator dies (not gracefully).
What happens to the aggregation?
A current aggregation in progress would not complete which is OK because it
would not be commited to the queue (JMS transaction) and therefore
resubmitted after restart.

With "sync" flag I guess that the above applies to any aggregation that is
not completely written to LevelDB. Therefore it should be absolutely safe
in this scenario and even for power-outage scenario.

Without "sync" flag a completed aggregation that is handed over for writing
would be commited to the queue. So if the Java process dies, what happens
to LevelDB? Does it still write pending aggregations because it is just
between the operating system and the LevelDB file? Or is the completed but
not written aggregation lost?

The first would mean that "sync" = true is only needed to protect against
power outage of the whole machine, while the latter would mean that "sync"
= true would be needed to protect against not graceful shutdowns of the
aggregator process.

Thanks
Stephan

Reply via email to