Repository: incubator-wave
Updated Branches:
  refs/heads/master eced2256e -> d5e607397


Added Journaled Write Concern for delta storage operations with MongoDB
https://reviews.apache.org/r/17942


Project: http://git-wip-us.apache.org/repos/asf/incubator-wave/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-wave/commit/d5e60739
Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave/tree/d5e60739
Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave/diff/d5e60739

Branch: refs/heads/master
Commit: d5e607397ce21f8740963d32e5967455600d0928
Parents: eced225
Author: Pablo Ojanguren <[email protected]>
Authored: Tue Feb 18 22:07:50 2014 +0200
Committer: Yuri Zelikov <[email protected]>
Committed: Tue Feb 18 22:09:31 2014 +0200

----------------------------------------------------------------------
 .../persistence/mongodb/MongoDbDeltaCollection.java  | 15 +++++++++------
 .../persistence/mongodb/MongoDbDeltaStore.java       | 13 ++++++++-----
 2 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/d5e60739/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaCollection.java
----------------------------------------------------------------------
diff --git 
a/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaCollection.java
 
b/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaCollection.java
index 536f842..e9a326b 100644
--- 
a/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaCollection.java
+++ 
b/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaCollection.java
@@ -22,6 +22,7 @@ package org.waveprotocol.box.server.persistence.mongodb;
 import com.mongodb.BasicDBObject;
 import com.mongodb.DBCollection;
 import com.mongodb.DBObject;
+import com.mongodb.WriteConcern;
 
 import org.waveprotocol.box.server.persistence.PersistenceException;
 import org.waveprotocol.box.server.waveserver.ByteStringMessage;
@@ -38,9 +39,9 @@ import java.util.Collection;
 /**
  * A MongoDB based Delta Access implementation using a simple <b>deltas</b>
  * collection, storing a delta record per each MongoDb document.
- * 
+ *
  * @author [email protected] (Pablo Ojanguren)
- * 
+ *
  */
 public class MongoDbDeltaCollection implements DeltaStore.DeltasAccess {
 
@@ -52,7 +53,7 @@ public class MongoDbDeltaCollection implements 
DeltaStore.DeltasAccess {
 
   /**
    * Construct a new Delta Access object for the wavelet
-   * 
+   *
    * @param waveletName The wavelet name.
    * @param deltaDbCollection The MongoDB deltas collection
    */
@@ -68,7 +69,7 @@ public class MongoDbDeltaCollection implements 
DeltaStore.DeltasAccess {
 
   /**
    * Create a new DBObject for a common query to select this wavelet
-   * 
+   *
    * @return DBObject query
    */
   protected DBObject createWaveletDBQuery() {
@@ -194,9 +195,11 @@ public class MongoDbDeltaCollection implements 
DeltaStore.DeltasAccess {
   public void append(Collection<WaveletDeltaRecord> newDeltas) throws 
PersistenceException {
 
     for (WaveletDeltaRecord delta : newDeltas) {
-
+      // Using Journaled Write Concern
+      // (http://docs.mongodb.org/manual/core/write-concern/#journaled)
       deltaDbCollection.insert(MongoDbDeltaStoreUtil.serialize(delta,
-          waveletName.waveId.serialise(), waveletName.waveletId.serialise()));
+          waveletName.waveId.serialise(), waveletName.waveletId.serialise()),
+          WriteConcern.JOURNALED);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/d5e60739/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaStore.java
----------------------------------------------------------------------
diff --git 
a/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaStore.java 
b/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaStore.java
index 9106886..05aacbd 100644
--- a/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaStore.java
+++ b/src/org/waveprotocol/box/server/persistence/mongodb/MongoDbDeltaStore.java
@@ -27,6 +27,7 @@ import com.mongodb.DBCollection;
 import com.mongodb.DBCursor;
 import com.mongodb.DBObject;
 import com.mongodb.MongoException;
+import com.mongodb.WriteConcern;
 
 import org.waveprotocol.box.common.ExceptionalIterator;
 import 
org.waveprotocol.box.server.persistence.FileNotFoundPersistenceException;
@@ -41,9 +42,9 @@ import java.util.List;
 /**
  * A MongoDB based Delta Store implementation using a simple <b>deltas</b>
  * collection, storing a delta record per each MongoDb document.
- * 
+ *
  * @author [email protected] (Pablo Ojanguren)
- * 
+ *
  */
 public class MongoDbDeltaStore implements DeltaStore {
 
@@ -55,7 +56,7 @@ public class MongoDbDeltaStore implements DeltaStore {
 
   /**
    * Construct a new store
-   * 
+   *
    * @param database the database connection object
    */
   public MongoDbDeltaStore(DB database) {
@@ -77,7 +78,9 @@ public class MongoDbDeltaStore implements DeltaStore {
     criteria.put(MongoDbDeltaStoreUtil.FIELD_WAVELET_ID, 
waveletName.waveletId.serialise());
 
     try {
-      getDeltaDbCollection().remove(criteria);
+      // Using Journaled Write Concern
+      // (http://docs.mongodb.org/manual/core/write-concern/#journaled)
+      getDeltaDbCollection().remove(criteria, WriteConcern.JOURNALED);
     } catch (MongoException e) {
       throw new PersistenceException(e);
     }
@@ -138,7 +141,7 @@ public class MongoDbDeltaStore implements DeltaStore {
 
   /**
    * Access to deltas collection
-   * 
+   *
    * @return DBCollection of deltas
    */
   private DBCollection getDeltaDbCollection() {

Reply via email to