You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2012/02/07 16:06:26 UTC
svn commit: r1241481 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal:
DatabaseJournal.java FileJournal.java FileRevision.java
Author: dpfister
Date: Tue Feb 7 15:06:25 2012
New Revision: 1241481
URL: http://svn.apache.org/viewvc?rev=1241481&view=rev
Log:
JCR-3229 - FileRevision should have a flag to control whether to sync the file on every write.
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileRevision.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java?rev=1241481&r1=1241480&r2=1241481&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/DatabaseJournal.java Tue Feb 7 15:06:25 2012
@@ -364,7 +364,7 @@ public class DatabaseJournal extends Abs
// Get the local file revision from disk (upgrade; see JCR-1087)
long localFileRevision = 0L;
if (getRevision() != null) {
- InstanceRevision currentFileRevision = new FileRevision(new File(getRevision()));
+ InstanceRevision currentFileRevision = new FileRevision(new File(getRevision()), true);
localFileRevision = currentFileRevision.get();
currentFileRevision.close();
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java?rev=1241481&r1=1241480&r2=1241481&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileJournal.java Tue Feb 7 15:06:25 2012
@@ -247,7 +247,7 @@ public class FileJournal extends Abstrac
* {@inheritDoc}
*/
public InstanceRevision getInstanceRevision() throws JournalException {
- return new FileRevision(new File(getRevision()));
+ return new FileRevision(new File(getRevision()), true);
}
/**
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileRevision.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileRevision.java?rev=1241481&r1=1241480&r2=1241481&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileRevision.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/journal/FileRevision.java Tue Feb 7 15:06:25 2012
@@ -39,6 +39,11 @@ public class FileRevision implements Ins
private final RandomAccessFile raf;
/**
+ * Flag indicating whether to sync the file on every write.
+ */
+ private final boolean sync;
+
+ /**
* Cached value.
*/
private long value;
@@ -52,9 +57,13 @@ public class FileRevision implements Ins
* Creates a new file based revision counter.
*
* @param file holding global counter
+ * @param sync whether to sync the file on every write
+ *
* @throws JournalException if some error occurs
*/
- public FileRevision(File file) throws JournalException {
+ public FileRevision(File file, boolean sync) throws JournalException {
+ this.sync = sync;
+
try {
if (!file.exists()) {
file.createNewFile();
@@ -101,7 +110,9 @@ public class FileRevision implements Ins
}
raf.seek(0L);
raf.writeLong(value);
- raf.getFD().sync();
+ if (sync) {
+ raf.getFD().sync();
+ }
this.value = value;
} catch (IOException e) {
throw new JournalException("I/O error occurred.", e);