Author: chirino
Date: Thu Apr 22 10:44:27 2010
New Revision: 936770
URL: http://svn.apache.org/viewvc?rev=936770&view=rev
Log:
- do a pageFile.flush() after every commit garantee that the data is persisted
to disk on commit.
- better initialization logic to cope with the case were page file is created
but process is killed before the root index is created.
Modified:
camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java
Modified:
camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java?rev=936770&r1=936769&r2=936770&view=diff
==============================================================================
---
camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java
(original)
+++
camel/trunk/components/camel-hawtdb/src/main/java/org/apache/camel/component/hawtdb/HawtDBFile.java
Thu Apr 22 10:44:27 2010
@@ -68,19 +68,19 @@ public class HawtDBFile extends TxPageFi
LOG.debug("Starting HawtDB using file: " + getFile());
}
- final boolean initialize = !getFile().exists();
open();
pageFile = getTxPageFile();
execute(new Work<Boolean>() {
public Boolean execute(Transaction tx) {
- if (initialize) {
- int page = tx.allocator().alloc(1);
+ int page = tx.allocator().alloc(1);
+ if (page==0) {
// if we just created the file, first allocated page
should be 0
- assert page == 0;
ROOT_INDEXES_FACTORY.create(tx, 0);
LOG.info("Aggregation repository data store created using
file: " + getFile());
} else {
+ // Was previously created.. so free up the test page
+ tx.allocator().free(page, 1);
Index<String, Integer> indexes =
ROOT_INDEXES_FACTORY.open(tx, 0);
LOG.info("Aggregation repository data store loaded using
file: " + getFile()
+ " containing " + indexes.size() + "
repositories.");
@@ -109,6 +109,7 @@ public class HawtDBFile extends TxPageFi
try {
answer = work.execute(tx);
tx.commit();
+ pageFile.flush();
} catch (RuntimeException e) {
LOG.warn("Error executing work " + work + " will do rollback.", e);
tx.rollback();