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