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 ch...@apache.org on 2016/01/17 06:26:38 UTC
svn commit: r1725062 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/document/
test/java/org/apache/jackrabbit/oak/plugins/document/
Author: chetanm
Date: Sun Jan 17 05:26:37 2016
New Revision: 1725062
URL: http://svn.apache.org/viewvc?rev=1725062&view=rev
Log:
OAK-3791 - Time measurements for DocumentStore methods
Add metrics for failure and retries in updates
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/DocumentStoreStatsMBean.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsTest.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=1725062&r1=1725061&r2=1725062&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 Sun Jan 17 05:26:37 2016
@@ -65,6 +65,8 @@ public class DocumentStoreStats implemen
static final String NODES_CREATE_UPSERT_TIMER = "DOCUMENT_NODES_CREATE_UPSERT_TIMER";
static final String NODES_CREATE_TIMER = "DOCUMENT_NODES_CREATE_TIMER";
static final String NODES_UPDATE = "DOCUMENT_NODES_UPDATE";
+ static final String NODES_UPDATE_FAILURE = "DOCUMENT_NODES_UPDATE_FAILURE";
+ static final String NODES_UPDATE_RETRY_COUNT = "DOCUMENT_NODES_UPDATE_RETRY";
static final String NODES_UPDATE_TIMER = "DOCUMENT_NODES_UPDATE_TIMER";
static final String JOURNAL_QUERY = "DOCUMENT_JOURNAL_QUERY";
@@ -98,6 +100,8 @@ public class DocumentStoreStats implemen
private final MeterStats queryNodesLock;
private final TimerStats queryNodesLockTimer;
private final MeterStats createSplitNodeMeter;
+ private final MeterStats updateNodeFailureMeter;
+ private final MeterStats updateNodeRetryCountMeter;
public DocumentStoreStats(StatisticsProvider provider) {
statisticsProvider = checkNotNull(provider);
@@ -128,6 +132,8 @@ public class DocumentStoreStats implemen
createNodeUpsertMeter = provider.getMeter(NODES_CREATE_UPSERT, StatsOptions.DEFAULT);
createSplitNodeMeter = provider.getMeter(NODES_CREATE_SPLIT, StatsOptions.DEFAULT);
updateNodeMeter = provider.getMeter(NODES_UPDATE, StatsOptions.DEFAULT);
+ updateNodeFailureMeter = provider.getMeter(NODES_UPDATE_FAILURE, StatsOptions.DEFAULT);
+ updateNodeRetryCountMeter = provider.getMeter(NODES_UPDATE_RETRY_COUNT, StatsOptions.DEFAULT);
queryNodesLock = provider.getMeter(NODES_QUERY_LOCK, StatsOptions.DEFAULT);
queryNodesLockTimer = provider.getTimer(NODES_QUERY_LOCK_TIMER, StatsOptions.METRICS_ONLY);
@@ -226,13 +232,21 @@ public class DocumentStoreStats implemen
public void doneFindAndModify(long timeTakenNanos, Collection<? extends Document> collection, String key, boolean newEntry,
boolean success, int retryCount) {
if (collection == Collection.NODES){
- //TODO Meter for success and retryCount
- if (newEntry){
- createNodeUpsertMeter.mark();
- createNodeUpsertTimer.update(timeTakenNanos, TimeUnit.NANOSECONDS);
+ if (success) {
+ if (newEntry) {
+ createNodeUpsertMeter.mark();
+ createNodeUpsertTimer.update(timeTakenNanos, TimeUnit.NANOSECONDS);
+ } else {
+ updateNodeMeter.mark();
+ updateNodeTimer.update(timeTakenNanos, TimeUnit.NANOSECONDS);
+ }
+
+ if (retryCount > 0){
+ updateNodeRetryCountMeter.mark(retryCount);
+ }
} else {
- updateNodeMeter.mark();
- updateNodeTimer.update(timeTakenNanos, TimeUnit.NANOSECONDS);
+ updateNodeRetryCountMeter.mark(retryCount);
+ updateNodeFailureMeter.mark();
}
}
perfLog(timeTakenNanos, "findAndModify [{}]", key);
@@ -347,6 +361,16 @@ public class DocumentStoreStats implemen
return getTimeSeriesData(NODES_UPDATE, NODES_UPDATE);
}
+ @Override
+ public CompositeData getUpdateNodesRetryHistory() {
+ return getTimeSeriesData(NODES_UPDATE_RETRY_COUNT, NODES_UPDATE_RETRY_COUNT);
+ }
+
+ @Override
+ public CompositeData getUpdateNodesFailureHistory() {
+ return getTimeSeriesData(NODES_UPDATE_FAILURE, NODES_UPDATE_FAILURE);
+ }
+
private CompositeData getTimeSeriesData(String name, String desc){
return TimeSeriesStatsUtil.asCompositeData(getTimeSeries(name), desc);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsMBean.java?rev=1725062&r1=1725061&r2=1725062&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsMBean.java Sun Jan 17 05:26:37 2016
@@ -63,4 +63,8 @@ public interface DocumentStoreStatsMBean
CompositeData getCreateNodesHistory();
CompositeData getUpdateNodesHistory();
+
+ CompositeData getUpdateNodesRetryHistory();
+
+ CompositeData getUpdateNodesFailureHistory();
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsTest.java?rev=1725062&r1=1725061&r2=1725062&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentStoreStatsTest.java Sun Jan 17 05:26:37 2016
@@ -120,6 +120,16 @@ public class DocumentStoreStatsTest {
}
@Test
+ public void doneFindAndModifyRetryAndFailure() throws Exception{
+ stats.doneFindAndModify(100, Collection.NODES, "foo", true, false, 3);
+ assertEquals(1, getMeter(DocumentStoreStats.NODES_UPDATE_FAILURE).getCount());
+ assertEquals(3, getMeter(DocumentStoreStats.NODES_UPDATE_RETRY_COUNT).getCount());
+
+ stats.doneFindAndModify(100, Collection.NODES, "foo", true, true, 2);
+ assertEquals(5, getMeter(DocumentStoreStats.NODES_UPDATE_RETRY_COUNT).getCount());
+ }
+
+ @Test
public void perfLog() throws Exception{
String logName = DocumentStoreStats.class.getName() + ".perf";
LogCustomizer customLogs = LogCustomizer.forLogger(logName)