You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2016/02/01 16:44:06 UTC
svn commit: r1727959 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document:
DocumentStoreStats.java DocumentStoreStatsCollector.java
mongo/MongoDocumentStore.java rdb/RDBDocumentStore.java
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());
}