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)