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();