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 ad...@apache.org on 2018/03/20 09:21:14 UTC

svn commit: r1827283 - in /jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment: CommitsTracker.java SegmentNodeStoreStats.java SegmentNodeStoreStatsMBean.java

Author: adulceanu
Date: Tue Mar 20 09:21:14 2018
New Revision: 1827283

URL: http://svn.apache.org/viewvc?rev=1827283&view=rev
Log:
OAK-7337 - CommitsTracker data is always empty when exposed via JMX
Made commitsCountMapMaxSize configurable via JMX

Modified:
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
    jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStatsMBean.java

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java?rev=1827283&r1=1827282&r2=1827283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/CommitsTracker.java Tue Mar 20 09:21:14 2018
@@ -39,18 +39,11 @@ import com.googlecode.concurrentlinkedha
  * This class delegates thread-safety to its underlying state variables. 
  */
 class CommitsTracker {
-    private static final int DEFAULT_COMMITS_COUNT_MAP_SIZE = 20;
-    private static final boolean DEFAULT_COLLECT_STACK_TRACES = true;
-
     private volatile boolean collectStackTraces;
 
     private final ConcurrentMap<String, String> queuedWritersMap;
     private final ConcurrentMap<String, Long> commitsCountMap;
 
-    CommitsTracker() {
-        this(DEFAULT_COMMITS_COUNT_MAP_SIZE, DEFAULT_COLLECT_STACK_TRACES);
-    }
-
     CommitsTracker(int commitsCountMapMaxSize, boolean collectStackTraces) {
         this.collectStackTraces = collectStackTraces;
         this.commitsCountMap = new ConcurrentLinkedHashMap.Builder<String, Long>()

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java?rev=1827283&r1=1827282&r2=1827283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStats.java Tue Mar 20 09:21:14 2018
@@ -44,24 +44,28 @@ import org.apache.jackrabbit.oak.stats.S
 import org.apache.jackrabbit.oak.stats.TimerStats;
 
 public class SegmentNodeStoreStats implements SegmentNodeStoreStatsMBean, SegmentNodeStoreMonitor {
+    private static final boolean DEFAULT_COLLECT_STACK_TRACES = true;
+    private static final int DEFAULT_COMMITS_COUNT_MAP_SIZE = 20;
+
     public static final String COMMITS_COUNT = "COMMITS_COUNT";
     public static final String COMMIT_QUEUE_SIZE = "COMMIT_QUEUE_SIZE";
     public static final String COMMIT_TIME = "COMMIT_TIME";
     public static final String QUEUEING_TIME = "QUEUEING_TIME";
 
     private final StatisticsProvider statisticsProvider;
-    private final CommitsTracker commitsTracker;
     private final MeterStats commitsCount;
     private final CounterStats commitQueueSize;
     private final TimerStats commitTime;
     private final TimerStats queueingTime;
     
-    private boolean collectStackTraces;
+    private volatile CommitsTracker commitsTracker;
+    private boolean collectStackTraces = DEFAULT_COLLECT_STACK_TRACES;
+    private int commitsCountMapMaxSize = DEFAULT_COMMITS_COUNT_MAP_SIZE;
     
     public SegmentNodeStoreStats(StatisticsProvider statisticsProvider) {
         this.statisticsProvider = statisticsProvider;
         
-        this.commitsTracker = new CommitsTracker();
+        this.commitsTracker = new CommitsTracker(commitsCountMapMaxSize, collectStackTraces);
         this.commitsCount = statisticsProvider.getMeter(COMMITS_COUNT, StatsOptions.DEFAULT);
         this.commitQueueSize = statisticsProvider.getCounterStats(COMMIT_QUEUE_SIZE, StatsOptions.DEFAULT);
         this.commitTime = statisticsProvider.getTimer(COMMIT_TIME, StatsOptions.DEFAULT);
@@ -171,11 +175,20 @@ public class SegmentNodeStoreStats imple
     public boolean isCollectStackTraces() {
         return collectStackTraces;
     }
+    
+    public int getCommitsCountMapMaxSize() {
+        return commitsCountMapMaxSize;
+    }
+
+    public void setCommitsCountMapMaxSize(int commitsCountMapMaxSize) {
+        this.commitsCountMapMaxSize = commitsCountMapMaxSize;
+        commitsTracker = new CommitsTracker(commitsCountMapMaxSize, collectStackTraces);
+    }
 
     private TimeSeries getTimeSeries(String name) {
         return statisticsProvider.getStats().getTimeSeries(name, true);
     }
-    
+
     private static CompositeData mapToCompositeData(CompositeType compositeType, Map<String, Object> data) {
         try {
             return new CompositeDataSupport(compositeType, data);

Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStatsMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStatsMBean.java?rev=1827283&r1=1827282&r2=1827283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStatsMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreStatsMBean.java Tue Mar 20 09:21:14 2018
@@ -70,4 +70,17 @@ public interface SegmentNodeStoreStatsMB
      * @return collectStackTraces status flag
      */
     boolean isCollectStackTraces();
+    
+    /**
+     * Modifies the maximum number of writing threads to be recorded.
+     * Changing the default value will reset the overall collection process.
+     * 
+     * @param commitsCountMapSize the new size
+     */
+    void setCommitsCountMapMaxSize(int commitsCountMapMaxSize);
+    
+    /**
+     * @return maximum number of writing threads to be recorded
+     */
+    int getCommitsCountMapMaxSize();
 }