summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2010-08-07 10:02:33 -0700
committerShawn O. Pearce <sop@google.com>2010-08-07 10:02:40 -0700
commitfe1180d90c96b50aecb8d91ab4f3013d42b4fc4c (patch)
treeeffb3569d95c5d7818279661ce5f2f417d8e2aec
parent4486f2b854c699f90469f2ef4316b51724dd2a61 (diff)
downloadgwtorm-fe1180d90c96b50aecb8d91ab4f3013d42b4fc4c.tar.gz
Don't flush immediately during NoSQL writes
Most NoSQL systems require one or more RPCs to remote servers, which has a much higher latency than a write to a local MySQL server. To support setAutoFlush(false) in these cases we want to allow the schema handle to buffer any writes made by the access interfaces until the current operation is over. Change-Id: Ib642bbf021b25f054b0777d2d4302161300a3b4b Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
index c58eb23..739c3da 100644
--- a/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
+++ b/src/main/java/com/google/gwtorm/nosql/generic/GenericAccess.java
@@ -215,11 +215,18 @@ public abstract class GenericAccess<T, K extends Key<?>> extends
return new ListResultSet<T>(res);
}
+ private void maybeFlush() throws OrmException {
+ if (db.isAutoFlush()) {
+ db.flush();
+ }
+ }
+
@Override
public void insert(Iterable<T> instances) throws OrmException {
for (T obj : instances) {
insertOne(obj);
}
+ maybeFlush();
}
private void insertOne(T nObj) throws OrmException {
@@ -234,6 +241,7 @@ public abstract class GenericAccess<T, K extends Key<?>> extends
for (T obj : instances) {
upsertOne(obj, true);
}
+ maybeFlush();
}
@Override
@@ -241,6 +249,7 @@ public abstract class GenericAccess<T, K extends Key<?>> extends
for (T obj : instances) {
upsertOne(obj, false);
}
+ maybeFlush();
}
private void upsertOne(T newObj, boolean mustExist) throws OrmException {
@@ -316,6 +325,7 @@ public abstract class GenericAccess<T, K extends Key<?>> extends
db.delete(dataRowKey(primaryKey(oldObj)));
pruneOldIndexes(oldObj, null);
}
+ maybeFlush();
}
@Override