You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2013/11/15 17:39:20 UTC
svn commit: r1542319 - in
/incubator/sirona/trunk/core/src/main/java/org/apache/sirona:
gauges/counter/CounterGauge.java store/counter/InMemoryCounterDataStore.java
Author: rmannibucau
Date: Fri Nov 15 16:39:19 2013
New Revision: 1542319
URL: http://svn.apache.org/r1542319
Log:
ability to automatically add with the flag org.apache.sirona.counter.with-gauge 3 gauges by counter (sum, max, hits)
Modified:
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/counter/CounterGauge.java
incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/InMemoryCounterDataStore.java
Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/counter/CounterGauge.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/counter/CounterGauge.java?rev=1542319&r1=1542318&r2=1542319&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/counter/CounterGauge.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/gauges/counter/CounterGauge.java Fri Nov 15 16:39:19 2013
@@ -20,26 +20,29 @@ import org.apache.sirona.Role;
import org.apache.sirona.configuration.Configuration;
import org.apache.sirona.counters.Counter;
import org.apache.sirona.counters.MetricData;
+import org.apache.sirona.counters.Unit;
import org.apache.sirona.gauges.Gauge;
-public abstract class CounterGauge implements Gauge {
+public class CounterGauge implements Gauge {
private final Counter counter;
private final MetricData metric;
private final boolean reset;
+ private final Role role;
protected CounterGauge(final Counter counter) {
this(counter, MetricData.Sum, true);
}
- protected CounterGauge(final Counter counter, final MetricData metric, final boolean reset) {
+ public CounterGauge(final Counter counter, final MetricData metric, final boolean reset) {
this.counter = counter;
this.metric = metric;
this.reset = reset;
+ this.role = new Role(counter.getKey().getRole() + "-" + counter.getKey().getName() + "-" + metric.name(), Unit.UNARY);
}
@Override
public Role role() {
- return counter.getKey().getRole();
+ return role;
}
@Override
Modified: incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/InMemoryCounterDataStore.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/InMemoryCounterDataStore.java?rev=1542319&r1=1542318&r2=1542319&view=diff
==============================================================================
--- incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/InMemoryCounterDataStore.java (original)
+++ incubator/sirona/trunk/core/src/main/java/org/apache/sirona/store/counter/InMemoryCounterDataStore.java Fri Nov 15 16:39:19 2013
@@ -16,16 +16,24 @@
*/
package org.apache.sirona.store.counter;
+import org.apache.sirona.configuration.Configuration;
import org.apache.sirona.counters.Counter;
import org.apache.sirona.counters.DefaultCounter;
+import org.apache.sirona.counters.MetricData;
+import org.apache.sirona.gauges.Gauge;
+import org.apache.sirona.gauges.counter.CounterGauge;
+import org.apache.sirona.repositories.Repository;
import java.util.Collection;
+import java.util.LinkedList;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.locks.Lock;
public class InMemoryCounterDataStore implements CounterDataStore {
+ protected final boolean gauged = Configuration.is(Configuration.CONFIG_PROPERTY_PREFIX + "counter.with-gauge", false);
protected final ConcurrentMap<Counter.Key, Counter> counters = newCounterMap();
+ protected final Collection<Gauge> gauges = new LinkedList<Gauge>();
protected ConcurrentMap<Counter.Key, Counter> newCounterMap() {
return new ConcurrentHashMap<Counter.Key, Counter>(50);
@@ -43,14 +51,31 @@ public class InMemoryCounterDataStore im
final Counter previous = counters.putIfAbsent(key, counter);
if (previous != null) {
counter = previous;
+ } else if (gauged) {
+ newGauge(new CounterGauge(counter, MetricData.Sum, true));
+ newGauge(new CounterGauge(counter, MetricData.Max, true));
+ newGauge(new CounterGauge(counter, MetricData.Hits, true));
}
}
return counter;
}
+ private void newGauge(final Gauge gauge) {
+ Repository.INSTANCE.addGauge(gauge);
+ synchronized (gauges) {
+ gauges.add(gauge);
+ }
+ }
+
@Override
public void clearCounters() {
counters.clear();
+ synchronized (gauges) {
+ for (final Gauge g : gauges) {
+ Repository.INSTANCE.stopGauge(g);
+ }
+ gauges.clear();
+ }
}
@Override