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