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 to...@apache.org on 2018/04/10 11:34:05 UTC
svn commit: r1828805 -
/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java
Author: tomekr
Date: Tue Apr 10 11:34:05 2018
New Revision: 1828805
URL: http://svn.apache.org/viewvc?rev=1828805&view=rev
Log:
OAK-7393: A single StatisticsProvider is shared between all SegmentNodeStoreFactory instances
Modified:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java?rev=1828805&r1=1828804&r2=1828805&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreFactory.java Tue Apr 10 11:34:05 2018
@@ -34,6 +34,8 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.ReferencePolicyOption;
+import org.apache.jackrabbit.api.stats.RepositoryStatistics;
+import org.apache.jackrabbit.api.stats.TimeSeries;
import org.apache.jackrabbit.oak.commons.IOUtils;
import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard;
import org.apache.jackrabbit.oak.segment.spi.persistence.SegmentNodeStorePersistence;
@@ -41,7 +43,12 @@ import org.apache.jackrabbit.oak.spi.blo
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.spi.state.NodeStoreProvider;
import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
+import org.apache.jackrabbit.oak.stats.CounterStats;
+import org.apache.jackrabbit.oak.stats.HistogramStats;
+import org.apache.jackrabbit.oak.stats.MeterStats;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
+import org.apache.jackrabbit.oak.stats.StatsOptions;
+import org.apache.jackrabbit.oak.stats.TimerStats;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -132,7 +139,7 @@ public class SegmentNodeStoreFactory {
registrations = Closer.create();
OsgiWhiteboard whiteboard = new OsgiWhiteboard(context.getBundleContext());
final SegmentNodeStore store = SegmentNodeStoreService.registerSegmentStore(context, blobStore, segmentStore,
- statisticsProvider, registrations, whiteboard, role, registerRepositoryDescriptors);
+ getRoleStatisticsProvider(statisticsProvider, role), registrations, whiteboard, role, registerRepositoryDescriptors);
if (store != null) {
Map<String, Object> props = new HashMap<String, Object>();
props.put(NodeStoreProvider.ROLE, role);
@@ -173,5 +180,50 @@ public class SegmentNodeStoreFactory {
return lookupConfigurationThenFramework(context, name);
}
+ private static StatisticsProvider getRoleStatisticsProvider(StatisticsProvider delegate, String role) {
+ RepositoryStatistics repositoryStatistics = new RepositoryStatistics() {
+ @Override
+ public TimeSeries getTimeSeries(Type type) {
+ return getTimeSeries(type.name(), type.isResetValueEachSecond());
+ }
+
+ @Override
+ public TimeSeries getTimeSeries(String type, boolean resetValueEachSecond) {
+ return delegate.getStats().getTimeSeries(addRoleToName(type, role), resetValueEachSecond);
+ }
+ };
+
+ return new StatisticsProvider() {
+ @Override
+ public RepositoryStatistics getStats() {
+ return repositoryStatistics;
+ }
+
+ @Override
+ public MeterStats getMeter(String name, StatsOptions options) {
+ return delegate.getMeter(addRoleToName(name, role), options);
+ }
+
+ @Override
+ public CounterStats getCounterStats(String name, StatsOptions options) {
+ return delegate.getCounterStats(addRoleToName(name, role), options);
+ }
+
+ @Override
+ public TimerStats getTimer(String name, StatsOptions options) {
+ return delegate.getTimer(addRoleToName(name, role), options);
+ }
+
+ @Override
+ public HistogramStats getHistogram(String name, StatsOptions options) {
+ return delegate.getHistogram(addRoleToName(name, role), options);
+ }
+ };
+ }
+
+ private static String addRoleToName(String name, String role) {
+ return new StringBuilder(role).append('.').append(name).toString();
+ }
+
}