Author: mreutegg
Date: Mon Feb 1 15:44:06 2016
New Revision: 1727959
URL: http://svn.apache.org/viewvc?rev=1727959&view=rev
Log:
OAK-3964: Add bulk createOrUpdate() to DocumentStoreStats
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStats.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsCollector.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStats.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStats.java?rev=1727959&r1=1727958&r2=1727959&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStats.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStats.java
Mon Feb 1 15:44:06 2016
@@ -223,6 +223,22 @@ public class DocumentStoreStats implemen
}
@Override
+ public void doneCreateOrUpdate(long timeTakenNanos,
+ Collection<? extends Document> collection,
+ List<String> ids) {
+ if (collection == Collection.NODES) {
+ for (String id : ids){
+ createNodeUpsertMeter.mark();
+ if (Utils.isPreviousDocId(id)){
+ createSplitNodeMeter.mark();
+ }
+ }
+ createNodeUpsertTimer.update(timeTakenNanos / ids.size(),
TimeUnit.NANOSECONDS);
+ }
+ perfLog(timeTakenNanos, "createOrUpdate {}", ids);
+ }
+
+ @Override
public void doneUpdate(long timeTakenNanos, Collection<? extends Document>
collection, int updateCount) {
//NODES - Update is called for lastRev update
perfLog(timeTakenNanos, "update");
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsCollector.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsCollector.java?rev=1727959&r1=1727958&r2=1727959&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsCollector.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsCollector.java
Mon Feb 1 15:44:06 2016
@@ -64,6 +64,15 @@ public interface DocumentStoreStatsColle
void doneCreate(long timeTakenNanos, Collection<? extends Document>
collection, List<String> ids, boolean insertSuccess);
/**
+ * Called when multiple document are either created or updated.
+ *
+ * @param timeTakenNanos time taken
+ * @param collection the collection
+ * @param ids list of ids request to be created or updated
+ */
+ void doneCreateOrUpdate(long timeTakenNanos, Collection<? extends
Document> collection, List<String> ids);
+
+ /**
* Called when a given updated has modified multiple documents
* @param timeTakenNanos time taken
* @param collection the collection
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1727959&r1=1727958&r2=1727959&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
Mon Feb 1 15:44:06 2016
@@ -863,7 +863,7 @@ public class MongoDocumentStore implemen
List<UpdateOp> duplicates = new ArrayList<UpdateOp>();
Map<UpdateOp, T> results = new LinkedHashMap<UpdateOp, T>();
- final long start = PERFLOG.start();
+ final Stopwatch watch = startWatch();
try {
for (UpdateOp updateOp : updateOps) {
UpdateUtils.assertUnconditional(updateOp);
@@ -905,7 +905,13 @@ public class MongoDocumentStore implemen
}
}
} finally {
- PERFLOG.end(start, 1, "createOrUpdate {}", updateOps);
+ stats.doneCreateOrUpdate(watch.elapsed(TimeUnit.NANOSECONDS),
+ collection, Lists.transform(updateOps, new
Function<UpdateOp, String>() {
+ @Override
+ public String apply(UpdateOp input) {
+ return input.getId();
+ }
+ }));
}
List<T> resultList = new ArrayList<T>(results.values());
log("createOrUpdate returns", resultList);
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1727959&r1=1727958&r2=1727959&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Mon Feb 1 15:44:06 2016
@@ -61,6 +61,7 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.sql.DataSource;
+import com.google.common.base.Function;
import com.google.common.base.Stopwatch;
import org.apache.jackrabbit.oak.cache.CacheStats;
import org.apache.jackrabbit.oak.plugins.document.Collection;
@@ -306,6 +307,7 @@ public class RDBDocumentStore implements
return results;
}
+ final Stopwatch watch = startWatch();
Map<UpdateOp, T> results = new LinkedHashMap<UpdateOp, T>();
Map<String, UpdateOp> operationsToCover = new LinkedHashMap<String,
UpdateOp>();
Set<UpdateOp> duplicates = new HashSet<UpdateOp>();
@@ -361,7 +363,13 @@ public class RDBDocumentStore implements
results.put(updateOp, createOrUpdate(collection, updateOp));
}
}
-
+ stats.doneCreateOrUpdate(watch.elapsed(TimeUnit.NANOSECONDS),
+ collection, Lists.transform(updateOps, new Function<UpdateOp,
String>() {
+ @Override
+ public String apply(UpdateOp input) {
+ return input.getId();
+ }
+ }));
return new ArrayList<T>(results.values());
}