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();
 }


Reply via email to