Author: chetanm
Date: Wed Nov 25 06:59:45 2015
New Revision: 1716312
URL: http://svn.apache.org/viewvc?rev=1716312&view=rev
Log:
OAK-3654 - Integrate with Metrics for various stats collection
Exposed the MetricRegistry instance to OSGi ServiceRegistry
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactoryTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java?rev=1716312&r1=1716311&r2=1716312&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactory.java
Wed Nov 25 06:59:45 2015
@@ -21,12 +21,16 @@ package org.apache.jackrabbit.oak.plugin
import java.io.Closeable;
import java.io.IOException;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import javax.management.MBeanServer;
+import com.google.common.collect.Lists;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -77,25 +81,28 @@ public class StatisticsProviderFactory {
@Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY)
private MBeanServer server;
private StatisticsProvider statisticsProvider;
- private ServiceRegistration registration;
+ private List<ServiceRegistration> regs = Lists.newArrayList();
private ScheduledExecutorService executor;
+ private BundleContext bundleContext;
@Activate
private void activate(BundleContext context, Map<String, Object> config) {
+ this.bundleContext = context;
String providerType =
PropertiesUtil.toString(config.get(PROVIDER_TYPE), TYPE_AUTO);
statisticsProvider = createProvider(providerType);
if (statisticsProvider != null) {
- registration =
context.registerService(StatisticsProvider.class.getName(),
- statisticsProvider, null);
+
regs.add(context.registerService(StatisticsProvider.class.getName(),
+ statisticsProvider, null));
}
}
@Deactivate
private void deactivate() throws IOException {
- if (registration != null) {
- registration.unregister();
+ for (ServiceRegistration reg : regs){
+ reg.unregister();
}
+ regs.clear();
if (statisticsProvider instanceof Closeable) {
((Closeable) statisticsProvider).close();
@@ -127,7 +134,13 @@ public class StatisticsProviderFactory {
}
private StatisticsProvider createMetricsProvider(ScheduledExecutorService
executor) {
- return new
org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider(server,
executor);
+ org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider
metricProvider =
+ new
org.apache.jackrabbit.oak.plugins.metric.MetricStatisticsProvider(server,
executor);
+ Dictionary<Object, Object> dictionary = new Hashtable<Object,
Object>();
+ dictionary.put("name", "oak");
+
regs.add(bundleContext.registerService("com.codahale.metrics.MetricRegistry",
+ metricProvider.getRegistry(), dictionary));
+ return metricProvider;
}
private boolean isMetricSupportPresent() {
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactoryTest.java?rev=1716312&r1=1716311&r2=1716312&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactoryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/metric/StatisticsProviderFactoryTest.java
Wed Nov 25 06:59:45 2015
@@ -24,6 +24,7 @@ import java.util.Collections;
import javax.management.MBeanServer;
+import com.codahale.metrics.MetricRegistry;
import com.google.common.collect.ImmutableMap;
import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
import org.apache.jackrabbit.oak.stats.StatisticsProvider;
@@ -33,6 +34,7 @@ import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -51,6 +53,7 @@ public class StatisticsProviderFactoryTe
public void autoMode() throws Exception {
MockOsgi.activate(service, context.bundleContext(),
Collections.<String, Object>emptyMap());
assertTrue(context.getService(StatisticsProvider.class) instanceof
MetricStatisticsProvider);
+ assertNotNull(context.getService(MetricRegistry.class));
MockOsgi.deactivate(service);
assertNull(context.getService(StatisticsProvider.class));