You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2015/01/28 17:15:45 UTC
[2/4] cassandra git commit: Upgrade metrics library and remove
depricated metrics
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/LatencyMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/LatencyMetrics.java b/src/java/org/apache/cassandra/metrics/LatencyMetrics.java
index 149af91..ced56a8 100644
--- a/src/java/org/apache/cassandra/metrics/LatencyMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/LatencyMetrics.java
@@ -20,13 +20,14 @@ package org.apache.cassandra.metrics;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import org.apache.cassandra.utils.EstimatedHistogram;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Timer;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.Counter;
-import com.yammer.metrics.core.Timer;
+
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
+
/**
* Metrics about latencies
@@ -44,11 +45,6 @@ public class LatencyMetrics
protected final MetricNameFactory factory;
protected final String namePrefix;
- @Deprecated public final EstimatedHistogram totalLatencyHistogram = new EstimatedHistogram();
- @Deprecated public final EstimatedHistogram recentLatencyHistogram = new EstimatedHistogram();
- protected long lastLatency;
- protected long lastOpCount;
-
/**
* Create LatencyMetrics with given group, type, and scope. Name prefix for each metric will be empty.
*
@@ -83,8 +79,8 @@ public class LatencyMetrics
this.factory = factory;
this.namePrefix = namePrefix;
- latency = Metrics.newTimer(factory.createMetricName(namePrefix + "Latency"), TimeUnit.MICROSECONDS, TimeUnit.SECONDS);
- totalLatency = Metrics.newCounter(factory.createMetricName(namePrefix + "TotalLatency"));
+ latency = Metrics.timer(factory.createMetricName(namePrefix + "Latency"));
+ totalLatency = Metrics.counter(factory.createMetricName(namePrefix + "TotalLatency"));
}
/**
@@ -106,9 +102,7 @@ public class LatencyMetrics
{
// convert to microseconds. 1 millionth
latency.update(nanos, TimeUnit.NANOSECONDS);
- totalLatency.inc(nanos / 1000);
- totalLatencyHistogram.add(nanos / 1000);
- recentLatencyHistogram.add(nanos / 1000);
+ totalLatency.inc(nanos);
for(LatencyMetrics parent : parents)
{
parent.addNano(nanos);
@@ -117,25 +111,7 @@ public class LatencyMetrics
public void release()
{
- Metrics.defaultRegistry().removeMetric(factory.createMetricName(namePrefix + "Latency"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName(namePrefix + "TotalLatency"));
- }
-
- @Deprecated
- public synchronized double getRecentLatency()
- {
- long ops = latency.count();
- long n = totalLatency.count();
- if (ops == lastOpCount)
- return 0;
- try
- {
- return ((double) n - lastLatency) / (ops - lastOpCount);
- }
- finally
- {
- lastLatency = n;
- lastOpCount = ops;
- }
+ Metrics.remove(factory.createMetricName(namePrefix + "Latency"));
+ Metrics.remove(factory.createMetricName(namePrefix + "TotalLatency"));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/MetricNameFactory.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/MetricNameFactory.java b/src/java/org/apache/cassandra/metrics/MetricNameFactory.java
index 78f8b14..4e8f2b4 100644
--- a/src/java/org/apache/cassandra/metrics/MetricNameFactory.java
+++ b/src/java/org/apache/cassandra/metrics/MetricNameFactory.java
@@ -17,7 +17,6 @@
*/
package org.apache.cassandra.metrics;
-import com.yammer.metrics.core.MetricName;
public interface MetricNameFactory
{
@@ -27,5 +26,5 @@ public interface MetricNameFactory
* @param metricName part of qualified name.
* @return new String with given metric name.
*/
- MetricName createMetricName(String metricName);
+ CassandraMetricsRegistry.MetricName createMetricName(String metricName);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/ReadRepairMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/ReadRepairMetrics.java b/src/java/org/apache/cassandra/metrics/ReadRepairMetrics.java
index f9b1a40..9ee1c60 100644
--- a/src/java/org/apache/cassandra/metrics/ReadRepairMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/ReadRepairMetrics.java
@@ -17,10 +17,9 @@
*/
package org.apache.cassandra.metrics;
-import java.util.concurrent.TimeUnit;
+import com.codahale.metrics.Meter;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.Meter;
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
/**
* Metrics related to Read Repair.
@@ -29,10 +28,7 @@ public class ReadRepairMetrics
{
private static final MetricNameFactory factory = new DefaultNameFactory("ReadRepair");
- public static final Meter repairedBlocking =
- Metrics.newMeter(factory.createMetricName("RepairedBlocking"), "RepairedBlocking", TimeUnit.SECONDS);
- public static final Meter repairedBackground =
- Metrics.newMeter(factory.createMetricName("RepairedBackground"), "RepairedBackground", TimeUnit.SECONDS);
- public static final Meter attempted =
- Metrics.newMeter(factory.createMetricName("Attempted"), "Attempted", TimeUnit.SECONDS);
+ public static final Meter repairedBlocking = Metrics.meter(factory.createMetricName("RepairedBlocking"));
+ public static final Meter repairedBackground = Metrics.meter(factory.createMetricName("RepairedBackground"));
+ public static final Meter attempted = Metrics.meter(factory.createMetricName("Attempted"));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/RestorableMeter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/RestorableMeter.java b/src/java/org/apache/cassandra/metrics/RestorableMeter.java
index c421618..b543665 100644
--- a/src/java/org/apache/cassandra/metrics/RestorableMeter.java
+++ b/src/java/org/apache/cassandra/metrics/RestorableMeter.java
@@ -18,12 +18,12 @@
*/
package org.apache.cassandra.metrics;
-import com.yammer.metrics.core.Clock;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import static java.lang.Math.exp;
+import com.codahale.metrics.Clock;
/**
* A meter metric which measures mean throughput as well as fifteen-minute and two-hour
@@ -52,7 +52,7 @@ public class RestorableMeter
public RestorableMeter() {
this.m15Rate = new RestorableEWMA(TimeUnit.MINUTES.toSeconds(15));
this.m120Rate = new RestorableEWMA(TimeUnit.MINUTES.toSeconds(120));
- this.startTime = this.clock.tick();
+ this.startTime = this.clock.getTick();
this.lastTick = new AtomicLong(startTime);
}
@@ -64,7 +64,7 @@ public class RestorableMeter
public RestorableMeter(double lastM15Rate, double lastM120Rate) {
this.m15Rate = new RestorableEWMA(lastM15Rate, TimeUnit.MINUTES.toSeconds(15));
this.m120Rate = new RestorableEWMA(lastM120Rate, TimeUnit.MINUTES.toSeconds(120));
- this.startTime = this.clock.tick();
+ this.startTime = this.clock.getTick();
this.lastTick = new AtomicLong(startTime);
}
@@ -73,7 +73,7 @@ public class RestorableMeter
*/
private void tickIfNecessary() {
final long oldTick = lastTick.get();
- final long newTick = clock.tick();
+ final long newTick = clock.getTick();
final long age = newTick - oldTick;
if (age > TICK_INTERVAL) {
final long newIntervalStartTick = newTick - age % TICK_INTERVAL;
@@ -139,7 +139,7 @@ public class RestorableMeter
if (count() == 0) {
return 0.0;
} else {
- final long elapsed = (clock.tick() - startTime);
+ final long elapsed = (clock.getTick() - startTime);
return (count() / (double) elapsed) * NANOS_PER_SECOND;
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/SEPMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/SEPMetrics.java b/src/java/org/apache/cassandra/metrics/SEPMetrics.java
index 58fe9c5..35f02b4 100644
--- a/src/java/org/apache/cassandra/metrics/SEPMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/SEPMetrics.java
@@ -17,22 +17,24 @@
*/
package org.apache.cassandra.metrics;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.Gauge;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
import org.apache.cassandra.concurrent.SEPExecutor;
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
+
public class SEPMetrics
{
/** Number of active tasks. */
public final Gauge<Integer> activeTasks;
/** Number of tasks that had blocked before being accepted (or rejected). */
- public final Gauge<Integer> totalBlocked;
+ public final Counter totalBlocked;
/**
* Number of tasks currently blocked, waiting to be accepted by
* the executor (because all threads are busy and the backing queue is full).
*/
- public final Gauge<Long> currentBlocked;
+ public final Counter currentBlocked;
/** Number of completed tasks. */
public final Gauge<Long> completedTasks;
/** Number of tasks waiting to be executed. */
@@ -52,44 +54,33 @@ public class SEPMetrics
public SEPMetrics(final SEPExecutor executor, String path, String poolName)
{
this.factory = new ThreadPoolMetricNameFactory("ThreadPools", path, poolName);
- activeTasks = Metrics.newGauge(factory.createMetricName("ActiveTasks"), new Gauge<Integer>()
+ activeTasks = Metrics.register(factory.createMetricName("ActiveTasks"), new Gauge<Integer>()
{
- public Integer value()
+ public Integer getValue()
{
return executor.getActiveCount();
}
});
- pendingTasks = Metrics.newGauge(factory.createMetricName("PendingTasks"), new Gauge<Long>()
+ pendingTasks = Metrics.register(factory.createMetricName("PendingTasks"), new Gauge<Long>()
{
- public Long value()
+ public Long getValue()
{
return executor.getPendingTasks();
}
});
- totalBlocked = Metrics.newGauge(factory.createMetricName("TotalBlockedTasks"), new Gauge<Integer>()
- {
- public Integer value()
- {
- return executor.getTotalBlockedTasks();
- }
- });
- currentBlocked = Metrics.newGauge(factory.createMetricName("CurrentlyBlockedTasks"), new Gauge<Long>()
- {
- public Long value()
- {
- return (long) executor.getCurrentlyBlockedTasks();
- }
- });
- completedTasks = Metrics.newGauge(factory.createMetricName("CompletedTasks"), new Gauge<Long>()
+ totalBlocked = Metrics.counter(factory.createMetricName("TotalBlockedTasks"));
+ currentBlocked = Metrics.counter(factory.createMetricName("CurrentlyBlockedTasks"));
+
+ completedTasks = Metrics.register(factory.createMetricName("CompletedTasks"), new Gauge<Long>()
{
- public Long value()
+ public Long getValue()
{
return executor.getCompletedTasks();
}
});
- maxPoolSize = Metrics.newGauge(factory.createMetricName("MaxPoolSize"), new Gauge<Integer>()
+ maxPoolSize = Metrics.register(factory.createMetricName("MaxPoolSize"), new Gauge<Integer>()
{
- public Integer value()
+ public Integer getValue()
{
return executor.maxWorkers;
}
@@ -98,11 +89,11 @@ public class SEPMetrics
public void release()
{
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("ActiveTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("PendingTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("CompletedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("TotalBlockedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("CurrentlyBlockedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("MaxPoolSize"));
+ Metrics.remove(factory.createMetricName("ActiveTasks"));
+ Metrics.remove(factory.createMetricName("PendingTasks"));
+ Metrics.remove(factory.createMetricName("CompletedTasks"));
+ Metrics.remove(factory.createMetricName("TotalBlockedTasks"));
+ Metrics.remove(factory.createMetricName("CurrentlyBlockedTasks"));
+ Metrics.remove(factory.createMetricName("MaxPoolSize"));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/StorageMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/StorageMetrics.java b/src/java/org/apache/cassandra/metrics/StorageMetrics.java
index 8ee90bb..12196f7 100644
--- a/src/java/org/apache/cassandra/metrics/StorageMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/StorageMetrics.java
@@ -17,8 +17,9 @@
*/
package org.apache.cassandra.metrics;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.Counter;
+import com.codahale.metrics.Counter;
+
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
/**
* Metrics related to Storage.
@@ -27,8 +28,8 @@ public class StorageMetrics
{
private static final MetricNameFactory factory = new DefaultNameFactory("Storage");
- public static final Counter load = Metrics.newCounter(factory.createMetricName("Load"));
- public static final Counter exceptions = Metrics.newCounter(factory.createMetricName("Exceptions"));
- public static final Counter totalHintsInProgress = Metrics.newCounter(factory.createMetricName("TotalHintsInProgress"));
- public static final Counter totalHints = Metrics.newCounter(factory.createMetricName("TotalHints"));
+ public static final Counter load = Metrics.counter(factory.createMetricName("Load"));
+ public static final Counter exceptions = Metrics.counter(factory.createMetricName("Exceptions"));
+ public static final Counter totalHintsInProgress = Metrics.counter(factory.createMetricName("TotalHintsInProgress"));
+ public static final Counter totalHints = Metrics.counter(factory.createMetricName("TotalHints"));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/StreamingMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/StreamingMetrics.java b/src/java/org/apache/cassandra/metrics/StreamingMetrics.java
index 51b4f8c..d00513c 100644
--- a/src/java/org/apache/cassandra/metrics/StreamingMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/StreamingMetrics.java
@@ -20,10 +20,12 @@ package org.apache.cassandra.metrics;
import java.net.InetAddress;
import java.util.concurrent.ConcurrentMap;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.Counter;
+
+import com.codahale.metrics.Counter;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
+
/**
* Metrics for streaming.
*/
@@ -33,9 +35,9 @@ public class StreamingMetrics
private static final ConcurrentMap<InetAddress, StreamingMetrics> instances = new NonBlockingHashMap<InetAddress, StreamingMetrics>();
- public static final Counter activeStreamsOutbound = Metrics.newCounter(DefaultNameFactory.createMetricName(TYPE_NAME, "ActiveOutboundStreams", null));
- public static final Counter totalIncomingBytes = Metrics.newCounter(DefaultNameFactory.createMetricName(TYPE_NAME, "TotalIncomingBytes", null));
- public static final Counter totalOutgoingBytes = Metrics.newCounter(DefaultNameFactory.createMetricName(TYPE_NAME, "TotalOutgoingBytes", null));
+ public static final Counter activeStreamsOutbound = Metrics.counter(DefaultNameFactory.createMetricName(TYPE_NAME, "ActiveOutboundStreams", null));
+ public static final Counter totalIncomingBytes = Metrics.counter(DefaultNameFactory.createMetricName(TYPE_NAME, "TotalIncomingBytes", null));
+ public static final Counter totalOutgoingBytes = Metrics.counter(DefaultNameFactory.createMetricName(TYPE_NAME, "TotalOutgoingBytes", null));
public final Counter incomingBytes;
public final Counter outgoingBytes;
@@ -53,7 +55,7 @@ public class StreamingMetrics
public StreamingMetrics(final InetAddress peer)
{
MetricNameFactory factory = new DefaultNameFactory("Streaming", peer.getHostAddress().replaceAll(":", "."));
- incomingBytes = Metrics.newCounter(factory.createMetricName("IncomingBytes"));
- outgoingBytes= Metrics.newCounter(factory.createMetricName("OutgoingBytes"));
+ incomingBytes = Metrics.counter(factory.createMetricName("IncomingBytes"));
+ outgoingBytes= Metrics.counter(factory.createMetricName("OutgoingBytes"));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/ThreadPoolMetricNameFactory.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/ThreadPoolMetricNameFactory.java b/src/java/org/apache/cassandra/metrics/ThreadPoolMetricNameFactory.java
index 4afc4d3..7810108 100644
--- a/src/java/org/apache/cassandra/metrics/ThreadPoolMetricNameFactory.java
+++ b/src/java/org/apache/cassandra/metrics/ThreadPoolMetricNameFactory.java
@@ -17,8 +17,6 @@
*/
package org.apache.cassandra.metrics;
-import com.yammer.metrics.core.MetricName;
-
class ThreadPoolMetricNameFactory implements MetricNameFactory
{
private final String type;
@@ -32,7 +30,7 @@ class ThreadPoolMetricNameFactory implements MetricNameFactory
this.poolName = poolName;
}
- public MetricName createMetricName(String metricName)
+ public CassandraMetricsRegistry.MetricName createMetricName(String metricName)
{
String groupName = ThreadPoolMetrics.class.getPackage().getName();
StringBuilder mbeanName = new StringBuilder();
@@ -42,6 +40,6 @@ class ThreadPoolMetricNameFactory implements MetricNameFactory
mbeanName.append(",scope=").append(poolName);
mbeanName.append(",name=").append(metricName);
- return new MetricName(groupName, type, metricName, path + "." + poolName, mbeanName.toString());
+ return new CassandraMetricsRegistry.MetricName(groupName, type, metricName, path + "." + poolName, mbeanName.toString());
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/metrics/ThreadPoolMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/ThreadPoolMetrics.java b/src/java/org/apache/cassandra/metrics/ThreadPoolMetrics.java
index a5e6daf..992e676 100644
--- a/src/java/org/apache/cassandra/metrics/ThreadPoolMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/ThreadPoolMetrics.java
@@ -19,8 +19,16 @@ package org.apache.cassandra.metrics;
import java.util.concurrent.ThreadPoolExecutor;
-import com.yammer.metrics.Metrics;
-import com.yammer.metrics.core.*;
+import com.codahale.metrics.Counter;
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.JmxReporter;
+
+import javax.management.JMX;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+
+import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
+
/**
* Metrics for {@link ThreadPoolExecutor}.
@@ -56,32 +64,32 @@ public class ThreadPoolMetrics
{
this.factory = new ThreadPoolMetricNameFactory("ThreadPools", path, poolName);
- activeTasks = Metrics.newGauge(factory.createMetricName("ActiveTasks"), new Gauge<Integer>()
+ activeTasks = Metrics.register(factory.createMetricName("ActiveTasks"), new Gauge<Integer>()
{
- public Integer value()
+ public Integer getValue()
{
return executor.getActiveCount();
}
});
- totalBlocked = Metrics.newCounter(factory.createMetricName("TotalBlockedTasks"));
- currentBlocked = Metrics.newCounter(factory.createMetricName("CurrentlyBlockedTasks"));
- completedTasks = Metrics.newGauge(factory.createMetricName("CompletedTasks"), new Gauge<Long>()
+ totalBlocked = Metrics.counter(factory.createMetricName("TotalBlockedTasks"));
+ currentBlocked = Metrics.counter(factory.createMetricName("CurrentlyBlockedTasks"));
+ completedTasks = Metrics.register(factory.createMetricName("CompletedTasks"), new Gauge<Long>()
{
- public Long value()
+ public Long getValue()
{
return executor.getCompletedTaskCount();
}
});
- pendingTasks = Metrics.newGauge(factory.createMetricName("PendingTasks"), new Gauge<Long>()
+ pendingTasks = Metrics.register(factory.createMetricName("PendingTasks"), new Gauge<Long>()
{
- public Long value()
+ public Long getValue()
{
return executor.getTaskCount() - executor.getCompletedTaskCount();
}
});
- maxPoolSize = Metrics.newGauge(factory.createMetricName("MaxPoolSize"), new Gauge<Integer>()
+ maxPoolSize = Metrics.register(factory.createMetricName("MaxPoolSize"), new Gauge<Integer>()
{
- public Integer value()
+ public Integer getValue()
{
return executor.getMaximumPoolSize();
}
@@ -90,11 +98,41 @@ public class ThreadPoolMetrics
public void release()
{
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("ActiveTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("PendingTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("CompletedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("TotalBlockedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("CurrentlyBlockedTasks"));
- Metrics.defaultRegistry().removeMetric(factory.createMetricName("MaxPoolSize"));
+ Metrics.remove(factory.createMetricName("ActiveTasks"));
+ Metrics.remove(factory.createMetricName("PendingTasks"));
+ Metrics.remove(factory.createMetricName("CompletedTasks"));
+ Metrics.remove(factory.createMetricName("TotalBlockedTasks"));
+ Metrics.remove(factory.createMetricName("CurrentlyBlockedTasks"));
+ Metrics.remove(factory.createMetricName("MaxPoolSize"));
}
+
+
+ public static Object getJmxMetric(MBeanServerConnection mbeanServerConn, String jmxPath, String poolName, String metricName)
+ {
+ String name = String.format("org.apache.cassandra.metrics:type=ThreadPools,path=%s,scope=%s,name=%s", jmxPath, poolName, metricName);
+
+ try
+ {
+ ObjectName oName = new ObjectName(name);
+
+ switch (metricName)
+ {
+ case "ActiveTasks":
+ case "PendingTasks":
+ case "CompletedTasks":
+ return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.JmxGaugeMBean.class).getValue();
+ case "TotalBlockedTasks":
+ case "CurrentlyBlockedTasks":
+ return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.JmxCounterMBean.class).getCount();
+ default:
+ throw new AssertionError("Unknown metric name " + metricName);
+ }
+
+ }
+ catch (Throwable e)
+ {
+ throw new RuntimeException("Error reading: " + name, e);
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 83ca384..b33cf81 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -879,7 +879,7 @@ public final class MessagingService implements MessagingServiceMBean
boolean logTpstats = false;
for (Map.Entry<Verb, DroppedMessageMetrics> entry : droppedMessages.entrySet())
{
- int dropped = (int) entry.getValue().dropped.count();
+ int dropped = (int) entry.getValue().dropped.getCount();
Verb verb = entry.getKey();
int recent = dropped - lastDroppedInternal.get(verb);
if (recent > 0)
@@ -1018,26 +1018,14 @@ public final class MessagingService implements MessagingServiceMBean
{
Map<String, Integer> map = new HashMap<String, Integer>(droppedMessages.size());
for (Map.Entry<Verb, DroppedMessageMetrics> entry : droppedMessages.entrySet())
- map.put(entry.getKey().toString(), (int) entry.getValue().dropped.count());
+ map.put(entry.getKey().toString(), (int) entry.getValue().dropped.getCount());
return map;
}
- public Map<String, Integer> getRecentlyDroppedMessages()
- {
- Map<String, Integer> map = new HashMap<String, Integer>(droppedMessages.size());
- for (Map.Entry<Verb, DroppedMessageMetrics> entry : droppedMessages.entrySet())
- map.put(entry.getKey().toString(), entry.getValue().getRecentlyDropped());
- return map;
- }
public long getTotalTimeouts()
{
- return ConnectionMetrics.totalTimeouts.count();
- }
-
- public long getRecentTotalTimouts()
- {
- return ConnectionMetrics.getRecentTotalTimeout();
+ return ConnectionMetrics.totalTimeouts.getCount();
}
public Map<String, Long> getTimeoutsPerHost()
@@ -1051,16 +1039,4 @@ public final class MessagingService implements MessagingServiceMBean
}
return result;
}
-
- public Map<String, Long> getRecentTimeoutsPerHost()
- {
- Map<String, Long> result = new HashMap<String, Long>(connectionManagers.size());
- for (Map.Entry<InetAddress, OutboundTcpConnectionPool> entry: connectionManagers.entrySet())
- {
- String ip = entry.getKey().getHostAddress();
- long recent = entry.getValue().getRecentTimeouts();
- result.put(ip, recent);
- }
- return result;
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/net/MessagingServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingServiceMBean.java b/src/java/org/apache/cassandra/net/MessagingServiceMBean.java
index ff39e23..1d00656 100644
--- a/src/java/org/apache/cassandra/net/MessagingServiceMBean.java
+++ b/src/java/org/apache/cassandra/net/MessagingServiceMBean.java
@@ -59,11 +59,6 @@ public interface MessagingServiceMBean
public Map<String, Integer> getDroppedMessages();
/**
- * dropped message counts since last called
- */
- public Map<String, Integer> getRecentlyDroppedMessages();
-
- /**
* Total number of timeouts happened on this node
*/
public long getTotalTimeouts();
@@ -73,15 +68,5 @@ public interface MessagingServiceMBean
*/
public Map<String, Long> getTimeoutsPerHost();
- /**
- * Number of timeouts since last check.
- */
- public long getRecentTotalTimouts();
-
- /**
- * Number of timeouts since last check per host.
- */
- public Map<String, Long> getRecentTimeoutsPerHost();
-
public int getVersion(String address) throws UnknownHostException;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
index 66a0362..6395aea 100644
--- a/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
+++ b/src/java/org/apache/cassandra/net/OutboundTcpConnectionPool.java
@@ -101,13 +101,9 @@ public class OutboundTcpConnectionPool
public long getTimeouts()
{
- return metrics.timeouts.count();
+ return metrics.timeouts.getCount();
}
- public long getRecentTimeouts()
- {
- return metrics.getRecentTimeout();
- }
public void incrementTimeout()
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/scheduler/RoundRobinScheduler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/scheduler/RoundRobinScheduler.java b/src/java/org/apache/cassandra/scheduler/RoundRobinScheduler.java
index 2968672..1a18e61 100644
--- a/src/java/org/apache/cassandra/scheduler/RoundRobinScheduler.java
+++ b/src/java/org/apache/cassandra/scheduler/RoundRobinScheduler.java
@@ -145,8 +145,6 @@ public class RoundRobinScheduler implements IRequestScheduler
weightedQueue = queues.putIfAbsent(id, maybenew);
if (weightedQueue == null)
{
- // created new queue: register for monitoring
- maybenew.register();
return maybenew;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/scheduler/WeightedQueue.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/scheduler/WeightedQueue.java b/src/java/org/apache/cassandra/scheduler/WeightedQueue.java
index 6ab5215..298938d 100644
--- a/src/java/org/apache/cassandra/scheduler/WeightedQueue.java
+++ b/src/java/org/apache/cassandra/scheduler/WeightedQueue.java
@@ -26,7 +26,7 @@ import javax.management.ObjectName;
import org.apache.cassandra.metrics.LatencyMetrics;
-class WeightedQueue implements WeightedQueueMBean
+class WeightedQueue
{
private final LatencyMetrics metric;
@@ -41,20 +41,6 @@ class WeightedQueue implements WeightedQueueMBean
this.metric = new LatencyMetrics("scheduler", "WeightedQueue", key);
}
- public void register()
- {
- // expose monitoring data
- MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
- try
- {
- mbs.registerMBean(this, new ObjectName("org.apache.cassandra.scheduler:type=WeightedQueue,queue=" + key));
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
-
public void put(Thread t, long timeoutMS) throws InterruptedException, TimeoutException
{
if (!queue.offer(new WeightedQueue.Entry(t), timeoutMS, TimeUnit.MILLISECONDS))
@@ -85,31 +71,4 @@ class WeightedQueue implements WeightedQueueMBean
this.thread = thread;
}
}
-
- /** MBean related methods */
-
- public long getOperations()
- {
- return metric.latency.count();
- }
-
- public long getTotalLatencyMicros()
- {
- return metric.totalLatency.count();
- }
-
- public double getRecentLatencyMicros()
- {
- return metric.getRecentLatency();
- }
-
- public long[] getTotalLatencyHistogramMicros()
- {
- return metric.totalLatencyHistogram.getBuckets(false);
- }
-
- public long[] getRecentLatencyHistogramMicros()
- {
- return metric.recentLatencyHistogram.getBuckets(true);
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/scheduler/WeightedQueueMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/scheduler/WeightedQueueMBean.java b/src/java/org/apache/cassandra/scheduler/WeightedQueueMBean.java
deleted file mode 100644
index d16d007..0000000
--- a/src/java/org/apache/cassandra/scheduler/WeightedQueueMBean.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.cassandra.scheduler;
-
-/**
- * Exposes client request scheduling metrics for a particular scheduler queue.
- * @see org.apache.cassandra.metrics.LatencyMetrics
- */
-@Deprecated
-public interface WeightedQueueMBean
-{
- public long getOperations();
- public long getTotalLatencyMicros();
- public double getRecentLatencyMicros();
- public long[] getTotalLatencyHistogramMicros();
- public long[] getRecentLatencyHistogramMicros();
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/CacheService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java
index fb8153c..e9f853c 100644
--- a/src/java/org/apache/cassandra/service/CacheService.java
+++ b/src/java/org/apache/cassandra/service/CacheService.java
@@ -180,35 +180,6 @@ public class CacheService implements CacheServiceMBean
return cache;
}
- public long getKeyCacheHits()
- {
- return keyCache.getMetrics().hits.count();
- }
-
- public long getRowCacheHits()
- {
- return rowCache.getMetrics().hits.count();
- }
-
- public long getKeyCacheRequests()
- {
- return keyCache.getMetrics().requests.count();
- }
-
- public long getRowCacheRequests()
- {
- return rowCache.getMetrics().requests.count();
- }
-
- public double getKeyCacheRecentHitRate()
- {
- return keyCache.getMetrics().getRecentHitRate();
- }
-
- public double getRowCacheRecentHitRate()
- {
- return rowCache.getMetrics().getRecentHitRate();
- }
public int getRowCacheSavePeriodInSeconds()
{
@@ -339,15 +310,8 @@ public class CacheService implements CacheServiceMBean
counterCache.clear();
}
- public long getRowCacheCapacityInBytes()
- {
- return rowCache.getMetrics().capacity.value();
- }
- public long getRowCacheCapacityInMB()
- {
- return getRowCacheCapacityInBytes() / 1024 / 1024;
- }
+
public void setRowCacheCapacityInMB(long capacity)
{
@@ -357,15 +321,6 @@ public class CacheService implements CacheServiceMBean
rowCache.setCapacity(capacity * 1024 * 1024);
}
- public long getKeyCacheCapacityInBytes()
- {
- return keyCache.getMetrics().capacity.value();
- }
-
- public long getKeyCacheCapacityInMB()
- {
- return getKeyCacheCapacityInBytes() / 1024 / 1024;
- }
public void setKeyCacheCapacityInMB(long capacity)
{
@@ -383,26 +338,6 @@ public class CacheService implements CacheServiceMBean
counterCache.setCapacity(capacity * 1024 * 1024);
}
- public long getRowCacheSize()
- {
- return rowCache.getMetrics().size.value();
- }
-
- public long getRowCacheEntries()
- {
- return rowCache.size();
- }
-
- public long getKeyCacheSize()
- {
- return keyCache.getMetrics().size.value();
- }
-
- public long getKeyCacheEntries()
- {
- return keyCache.size();
- }
-
public void saveCaches() throws ExecutionException, InterruptedException
{
List<Future<?>> futures = new ArrayList<>(3);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/CacheServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CacheServiceMBean.java b/src/java/org/apache/cassandra/service/CacheServiceMBean.java
index 28e9d3b..8ac0694 100644
--- a/src/java/org/apache/cassandra/service/CacheServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/CacheServiceMBean.java
@@ -64,90 +64,4 @@ public interface CacheServiceMBean
* @throws InterruptedException when a thread is waiting, sleeping, or otherwise occupied, and the thread is interrupted, either before or during the activity.
*/
public void saveCaches() throws ExecutionException, InterruptedException;
-
- //
- // remaining methods are provided for backwards compatibility; modern clients should use CacheMetrics instead
- //
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#hits
- */
- @Deprecated
- public long getKeyCacheHits();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#hits
- */
- @Deprecated
- public long getRowCacheHits();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#requests
- */
- @Deprecated
- public long getKeyCacheRequests();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#requests
- */
- @Deprecated
- public long getRowCacheRequests();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#hitRate
- */
- @Deprecated
- public double getKeyCacheRecentHitRate();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#hitRate
- */
- @Deprecated
- public double getRowCacheRecentHitRate();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#capacity
- */
- @Deprecated
- public long getRowCacheCapacityInMB();
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#capacity
- */
- @Deprecated
- public long getRowCacheCapacityInBytes();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#capacity
- */
- @Deprecated
- public long getKeyCacheCapacityInMB();
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#capacity
- */
- @Deprecated
- public long getKeyCacheCapacityInBytes();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#size
- */
- @Deprecated
- public long getRowCacheSize();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#entries
- */
- @Deprecated
- public long getRowCacheEntries();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#size
- */
- @Deprecated
- public long getKeyCacheSize();
-
- /**
- * @see org.apache.cassandra.metrics.CacheMetrics#entries
- */
- @Deprecated
- public long getKeyCacheEntries();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 9a6c7d7..0cfa171 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -58,6 +58,7 @@ import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.io.FSError;
import org.apache.cassandra.io.sstable.CorruptSSTableException;
import org.apache.cassandra.io.util.FileUtils;
+import org.apache.cassandra.metrics.CassandraMetricsRegistry;
import org.apache.cassandra.metrics.StorageMetrics;
import org.apache.cassandra.thrift.ThriftServer;
import org.apache.cassandra.tracing.Tracing;
@@ -558,9 +559,9 @@ public class CassandraDaemon
while (numOkay < GOSSIP_SETTLE_POLL_SUCCESSES_REQUIRED)
{
Uninterruptibles.sleepUninterruptibly(GOSSIP_SETTLE_POLL_INTERVAL_MS, TimeUnit.MILLISECONDS);
- long completed = gossipStage.getCompletedTasks();
- long active = gossipStage.getActiveCount();
- long pending = gossipStage.getPendingTasks();
+ long completed = gossipStage.metrics.completedTasks.getValue();
+ long active = gossipStage.metrics.activeTasks.getValue();
+ long pending = gossipStage.metrics.pendingTasks.getValue();
totalPolls++;
if (active == 0 && pending == 0)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/LoadBroadcaster.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/LoadBroadcaster.java b/src/java/org/apache/cassandra/service/LoadBroadcaster.java
index d12ffba..238daae 100644
--- a/src/java/org/apache/cassandra/service/LoadBroadcaster.java
+++ b/src/java/org/apache/cassandra/service/LoadBroadcaster.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
+import org.apache.cassandra.metrics.StorageMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -89,7 +90,7 @@ public class LoadBroadcaster implements IEndpointStateChangeSubscriber
if (logger.isDebugEnabled())
logger.debug("Disseminating load info ...");
Gossiper.instance.addLocalApplicationState(ApplicationState.LOAD,
- StorageService.instance.valueFactory.load(StorageService.instance.getLoad()));
+ StorageService.instance.valueFactory.load(StorageMetrics.load.getCount()));
}
};
ScheduledExecutors.scheduledTasks.scheduleWithFixedDelay(runnable, 2 * Gossiper.intervalInMillis, BROADCAST_INTERVAL, TimeUnit.MILLISECONDS);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index cf9990b..f74e601 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -568,7 +568,6 @@ public class StorageProxy implements StorageProxyMBean
else
{
writeMetrics.timeouts.mark();
- ClientRequestMetrics.writeTimeouts.inc();
Tracing.trace("Write timeout; received {} of {} required replies", ex.received, ex.blockFor);
throw ex;
}
@@ -576,13 +575,12 @@ public class StorageProxy implements StorageProxyMBean
catch (UnavailableException e)
{
writeMetrics.unavailables.mark();
- ClientRequestMetrics.writeUnavailables.inc();
Tracing.trace("Unavailable");
throw e;
}
catch (OverloadedException e)
{
- ClientRequestMetrics.writeUnavailables.inc();
+ writeMetrics.unavailables.mark();
Tracing.trace("Overloaded");
throw e;
}
@@ -651,14 +649,12 @@ public class StorageProxy implements StorageProxyMBean
catch (UnavailableException e)
{
writeMetrics.unavailables.mark();
- ClientRequestMetrics.writeUnavailables.inc();
Tracing.trace("Unavailable");
throw e;
}
catch (WriteTimeoutException e)
{
writeMetrics.timeouts.mark();
- ClientRequestMetrics.writeTimeouts.inc();
Tracing.trace("Write timeout; received {} of {} required replies", e.received, e.blockFor);
throw e;
}
@@ -864,10 +860,10 @@ public class StorageProxy implements StorageProxyMBean
// The idea is that if we have over maxHintsInProgress hints in flight, this is probably due to
// a small number of nodes causing problems, so we should avoid shutting down writes completely to
// healthy nodes. Any node with no hintsInProgress is considered healthy.
- if (StorageMetrics.totalHintsInProgress.count() > maxHintsInProgress
+ if (StorageMetrics.totalHintsInProgress.getCount() > maxHintsInProgress
&& (getHintsInProgressFor(destination).get() > 0 && shouldHint(destination)))
{
- throw new OverloadedException("Too many in flight hints: " + StorageMetrics.totalHintsInProgress.count());
+ throw new OverloadedException("Too many in flight hints: " + StorageMetrics.totalHintsInProgress.getCount());
}
if (FailureDetector.instance.isAlive(destination))
@@ -1184,7 +1180,6 @@ public class StorageProxy implements StorageProxyMBean
if (StorageService.instance.isBootstrapMode() && !systemKeyspaceQuery(commands))
{
readMetrics.unavailables.mark();
- ClientRequestMetrics.readUnavailables.inc();
throw new IsBootstrappingException();
}
@@ -1233,21 +1228,18 @@ public class StorageProxy implements StorageProxyMBean
catch (UnavailableException e)
{
readMetrics.unavailables.mark();
- ClientRequestMetrics.readUnavailables.inc();
casReadMetrics.unavailables.mark();
throw e;
}
catch (ReadTimeoutException e)
{
readMetrics.timeouts.mark();
- ClientRequestMetrics.readTimeouts.inc();
casReadMetrics.timeouts.mark();
throw e;
}
catch (ReadFailureException e)
{
readMetrics.failures.mark();
- ClientRequestMetrics.readFailures.inc();
casReadMetrics.failures.mark();
throw e;
}
@@ -1277,19 +1269,16 @@ public class StorageProxy implements StorageProxyMBean
catch (UnavailableException e)
{
readMetrics.unavailables.mark();
- ClientRequestMetrics.readUnavailables.inc();
throw e;
}
catch (ReadTimeoutException e)
{
readMetrics.timeouts.mark();
- ClientRequestMetrics.readTimeouts.inc();
throw e;
}
catch (ReadFailureException e)
{
readMetrics.failures.mark();
- ClientRequestMetrics.readFailures.inc();
throw e;
}
finally
@@ -1989,81 +1978,6 @@ public class StorageProxy implements StorageProxyMBean
return ranges;
}
- public long getReadOperations()
- {
- return readMetrics.latency.count();
- }
-
- public long getTotalReadLatencyMicros()
- {
- return readMetrics.totalLatency.count();
- }
-
- public double getRecentReadLatencyMicros()
- {
- return readMetrics.getRecentLatency();
- }
-
- public long[] getTotalReadLatencyHistogramMicros()
- {
- return readMetrics.totalLatencyHistogram.getBuckets(false);
- }
-
- public long[] getRecentReadLatencyHistogramMicros()
- {
- return readMetrics.recentLatencyHistogram.getBuckets(true);
- }
-
- public long getRangeOperations()
- {
- return rangeMetrics.latency.count();
- }
-
- public long getTotalRangeLatencyMicros()
- {
- return rangeMetrics.totalLatency.count();
- }
-
- public double getRecentRangeLatencyMicros()
- {
- return rangeMetrics.getRecentLatency();
- }
-
- public long[] getTotalRangeLatencyHistogramMicros()
- {
- return rangeMetrics.totalLatencyHistogram.getBuckets(false);
- }
-
- public long[] getRecentRangeLatencyHistogramMicros()
- {
- return rangeMetrics.recentLatencyHistogram.getBuckets(true);
- }
-
- public long getWriteOperations()
- {
- return writeMetrics.latency.count();
- }
-
- public long getTotalWriteLatencyMicros()
- {
- return writeMetrics.totalLatency.count();
- }
-
- public double getRecentWriteLatencyMicros()
- {
- return writeMetrics.getRecentLatency();
- }
-
- public long[] getTotalWriteLatencyHistogramMicros()
- {
- return writeMetrics.totalLatencyHistogram.getBuckets(false);
- }
-
- public long[] getRecentWriteLatencyHistogramMicros()
- {
- return writeMetrics.recentLatencyHistogram.getBuckets(true);
- }
-
public boolean getHintedHandoffEnabled()
{
return DatabaseDescriptor.hintedHandoffEnabled();
@@ -2291,7 +2205,7 @@ public class StorageProxy implements StorageProxyMBean
public long getTotalHints()
{
- return StorageMetrics.totalHints.count();
+ return StorageMetrics.totalHints.getCount();
}
public int getMaxHintsInProgress()
@@ -2306,7 +2220,7 @@ public class StorageProxy implements StorageProxyMBean
public int getHintsInProgress()
{
- return (int) StorageMetrics.totalHintsInProgress.count();
+ return (int) StorageMetrics.totalHintsInProgress.getCount();
}
public void verifyNoHintsInProgress()
@@ -2339,14 +2253,14 @@ public class StorageProxy implements StorageProxyMBean
public long getReadRepairAttempted() {
- return ReadRepairMetrics.attempted.count();
+ return ReadRepairMetrics.attempted.getCount();
}
public long getReadRepairRepairedBlocking() {
- return ReadRepairMetrics.repairedBlocking.count();
+ return ReadRepairMetrics.repairedBlocking.getCount();
}
public long getReadRepairRepairedBackground() {
- return ReadRepairMetrics.repairedBackground.count();
+ return ReadRepairMetrics.repairedBackground.getCount();
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/StorageProxyMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxyMBean.java b/src/java/org/apache/cassandra/service/StorageProxyMBean.java
index a04b660..55627be 100644
--- a/src/java/org/apache/cassandra/service/StorageProxyMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageProxyMBean.java
@@ -23,54 +23,6 @@ import java.util.Set;
public interface StorageProxyMBean
{
- /**
- * @see org.apache.cassandra.metrics.LatencyMetrics#lastOpCount
- */
- @Deprecated
- public long getReadOperations();
- /**
- * @see org.apache.cassandra.metrics.LatencyMetrics#totalLatencyHistogram
- */
- @Deprecated
- public long getTotalReadLatencyMicros();
- /**
- * @see org.apache.cassandra.metrics.LatencyMetrics#recentLatencyHistogram
- */
- @Deprecated
- public double getRecentReadLatencyMicros();
- /**
- * @see org.apache.cassandra.metrics.LatencyMetrics#totalLatencyHistogram
- */
- @Deprecated
- public long[] getTotalReadLatencyHistogramMicros();
- /**
- * @see org.apache.cassandra.metrics.LatencyMetrics#recentLatencyHistogram
- */
- @Deprecated
- public long[] getRecentReadLatencyHistogramMicros();
-
- @Deprecated
- public long getRangeOperations();
- @Deprecated
- public long getTotalRangeLatencyMicros();
- @Deprecated
- public double getRecentRangeLatencyMicros();
- @Deprecated
- public long[] getTotalRangeLatencyHistogramMicros();
- @Deprecated
- public long[] getRecentRangeLatencyHistogramMicros();
-
- @Deprecated
- public long getWriteOperations();
- @Deprecated
- public long getTotalWriteLatencyMicros();
- @Deprecated
- public double getRecentWriteLatencyMicros();
- @Deprecated
- public long[] getTotalWriteLatencyHistogramMicros();
- @Deprecated
- public long[] getRecentWriteLatencyHistogramMicros();
-
public long getTotalHints();
public boolean getHintedHandoffEnabled();
public Set<String> getHintedHandoffEnabledByDC();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index bb3e882..61bd938 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2009,24 +2009,10 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
onDead(endpoint, state);
}
- /** raw load value */
- public double getLoad()
- {
- double bytes = 0;
- for (String keyspaceName : Schema.instance.getKeyspaces())
- {
- Keyspace keyspace = Schema.instance.getKeyspaceInstance(keyspaceName);
- if (keyspace == null)
- continue;
- for (ColumnFamilyStore cfs : keyspace.getColumnFamilyStores())
- bytes += cfs.getLiveDiskSpaceUsed();
- }
- return bytes;
- }
public String getLoadString()
{
- return FileUtils.stringifyFileSize(getLoad());
+ return FileUtils.stringifyFileSize(StorageMetrics.load.getCount());
}
public Map<String, String> getLoadMap()
@@ -4113,11 +4099,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
return loader.stream();
}
- public int getExceptionCount()
- {
- return (int)StorageMetrics.exceptions.count();
- }
-
public void rescheduleFailedDeletions()
{
SSTableDeletingTask.rescheduleFailedTasks();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index 007ef31..06ab56a 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -161,13 +161,6 @@ public interface StorageServiceMBean extends NotificationEmitter
/** Retrieve the mapping of endpoint to host ID */
public Map<String, String> getHostIdMap();
- /**
- * Numeric load value.
- * @see org.apache.cassandra.metrics.StorageMetrics#load
- */
- @Deprecated
- public double getLoad();
-
/** Human-readable load value */
public String getLoadString();
@@ -441,9 +434,6 @@ public interface StorageServiceMBean extends NotificationEmitter
public void joinRing() throws IOException;
public boolean isJoined();
- @Deprecated
- public int getExceptionCount();
-
public void setStreamThroughputMbPerSec(int value);
public int getStreamThroughputMbPerSec();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/thrift/CassandraServer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java b/src/java/org/apache/cassandra/thrift/CassandraServer.java
index c0de59f..6546932 100644
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@ -538,7 +538,7 @@ public class CassandraServer implements Cassandra.Iface
// request by page if this is a large row
if (cfs.getMeanColumns() > 0)
{
- int averageColumnSize = (int) (cfs.getMeanRowSize() / cfs.getMeanColumns());
+ int averageColumnSize = (int) (cfs.metric.meanRowSize.getValue() / cfs.getMeanColumns());
pageSize = Math.min(COUNT_PAGE_SIZE, 4 * 1024 * 1024 / averageColumnSize);
pageSize = Math.max(2, pageSize);
logger.debug("average row column size is {}; using pageSize of {}", averageColumnSize, pageSize);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index 8aa5992..9e8945f 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -27,7 +27,10 @@ import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
import java.util.Map.Entry;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
import javax.management.*;
import javax.management.openmbean.CompositeData;
import javax.management.remote.JMXConnector;
@@ -39,8 +42,7 @@ import com.google.common.base.Function;
import com.google.common.collect.*;
import com.google.common.util.concurrent.Uninterruptibles;
-import com.yammer.metrics.reporting.JmxReporter;
-import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
+import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.db.ColumnFamilyStoreMBean;
import org.apache.cassandra.db.HintedHandOffManager;
import org.apache.cassandra.db.HintedHandOffManagerMBean;
@@ -51,7 +53,9 @@ import org.apache.cassandra.gms.FailureDetectorMBean;
import org.apache.cassandra.gms.Gossiper;
import org.apache.cassandra.gms.GossiperMBean;
import org.apache.cassandra.locator.EndpointSnitchInfoMBean;
-import org.apache.cassandra.metrics.ColumnFamilyMetrics.Sampler;
+import org.apache.cassandra.metrics.CassandraMetricsRegistry;
+import org.apache.cassandra.metrics.StorageMetrics;
+import org.apache.cassandra.metrics.ThreadPoolMetrics;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.net.MessagingServiceMBean;
import org.apache.cassandra.service.*;
@@ -59,6 +63,8 @@ import org.apache.cassandra.streaming.StreamState;
import org.apache.cassandra.streaming.StreamManagerMBean;
import org.apache.cassandra.streaming.management.StreamStateCompositeData;
+import org.apache.cassandra.metrics.ColumnFamilyMetrics.Sampler;
+
/**
* JMX client operations for Cassandra.
*/
@@ -525,22 +531,6 @@ public class NodeProbe implements AutoCloseable
gossProxy.assassinateEndpoint(address);
}
- public Iterator<Map.Entry<String, JMXEnabledThreadPoolExecutorMBean>> getThreadPoolMBeanProxies()
- {
- try
- {
- return new ThreadPoolProxyMBeanIterator(mbeanServerConn);
- }
- catch (MalformedObjectNameException e)
- {
- throw new RuntimeException("Invalid ObjectName? Please report this as a bug.", e);
- }
- catch (IOException e)
- {
- throw new RuntimeException("Could not retrieve list of stat mbeans.", e);
- }
- }
-
/**
* Set the compaction threshold
*
@@ -879,7 +869,7 @@ public class NodeProbe implements AutoCloseable
public int getExceptionCount()
{
- return ssProxy.getExceptionCount();
+ return (int)StorageMetrics.exceptions.getCount();
}
public Map<String, Integer> getDroppedMessages()
@@ -980,12 +970,12 @@ public class NodeProbe implements AutoCloseable
case "Size":
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Cache,scope=" + cacheType + ",name=" + metricName),
- JmxReporter.GaugeMBean.class).getValue();
+ CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();
case "Requests":
case "Hits":
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Cache,scope=" + cacheType + ",name=" + metricName),
- JmxReporter.MeterMBean.class).getCount();
+ CassandraMetricsRegistry.JmxMeterMBean.class).getCount();
default:
throw new RuntimeException("Unknown cache metric name.");
@@ -997,6 +987,11 @@ public class NodeProbe implements AutoCloseable
}
}
+ public Object getThreadPoolMetric(Stage stage, String metricName)
+ {
+ return ThreadPoolMetrics.getJmxMetric(mbeanServerConn, stage.getJmxType(), stage.getJmxName(), metricName);
+ }
+
/**
* Retrieve ColumnFamily metrics
* @param ks Keyspace for which stats are to be displayed.
@@ -1031,7 +1026,7 @@ public class NodeProbe implements AutoCloseable
case "RecentBloomFilterFalsePositives":
case "RecentBloomFilterFalseRatio":
case "SnapshotsSize":
- return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.GaugeMBean.class).getValue();
+ return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();
case "LiveDiskSpaceUsed":
case "MemtableSwitchCount":
case "SpeculativeRetries":
@@ -1039,16 +1034,16 @@ public class NodeProbe implements AutoCloseable
case "WriteTotalLatency":
case "ReadTotalLatency":
case "PendingFlushes":
- return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.CounterMBean.class).getCount();
- case "ReadLatency":
+ return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxCounterMBean.class).getCount();
case "CoordinatorReadLatency":
case "CoordinatorScanLatency":
+ case "ReadLatency":
case "WriteLatency":
- return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.TimerMBean.class);
+ return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxTimerMBean.class);
case "LiveScannedHistogram":
case "SSTablesPerReadHistogram":
case "TombstoneScannedHistogram":
- return JMX.newMBeanProxy(mbeanServerConn, oName, JmxReporter.HistogramMBean.class);
+ return JMX.newMBeanProxy(mbeanServerConn, oName, CassandraMetricsRegistry.JmxHistogramMBean.class);
default:
throw new RuntimeException("Unknown table metric.");
}
@@ -1063,13 +1058,13 @@ public class NodeProbe implements AutoCloseable
* Retrieve Proxy metrics
* @param scope RangeSlice, Read or Write
*/
- public JmxReporter.TimerMBean getProxyMetric(String scope)
+ public CassandraMetricsRegistry.JmxTimerMBean getProxyMetric(String scope)
{
try
{
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=ClientRequest,scope=" + scope + ",name=Latency"),
- JmxReporter.TimerMBean.class);
+ CassandraMetricsRegistry.JmxTimerMBean.class);
}
catch (MalformedObjectNameException e)
{
@@ -1090,16 +1085,16 @@ public class NodeProbe implements AutoCloseable
case "BytesCompacted":
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Compaction,name=" + metricName),
- JmxReporter.CounterMBean.class);
+ CassandraMetricsRegistry.JmxCounterMBean.class);
case "CompletedTasks":
case "PendingTasks":
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Compaction,name=" + metricName),
- JmxReporter.GaugeMBean.class).getValue();
+ CassandraMetricsRegistry.JmxGaugeMBean.class).getValue();
case "TotalCompactionsCompleted":
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Compaction,name=" + metricName),
- JmxReporter.MeterMBean.class);
+ CassandraMetricsRegistry.JmxMeterMBean.class);
default:
throw new RuntimeException("Unknown compaction metric.");
}
@@ -1120,7 +1115,7 @@ public class NodeProbe implements AutoCloseable
{
return JMX.newMBeanProxy(mbeanServerConn,
new ObjectName("org.apache.cassandra.metrics:type=Storage,name=" + metricName),
- JmxReporter.CounterMBean.class).getCount();
+ CassandraMetricsRegistry.JmxCounterMBean.class).getCount();
}
catch (MalformedObjectNameException e)
{
@@ -1128,7 +1123,18 @@ public class NodeProbe implements AutoCloseable
}
}
- public double[] metricPercentilesAsArray(JmxReporter.HistogramMBean metric)
+ public double[] metricPercentilesAsArray(CassandraMetricsRegistry.JmxHistogramMBean metric)
+ {
+ return new double[]{ metric.get50thPercentile(),
+ metric.get75thPercentile(),
+ metric.get95thPercentile(),
+ metric.get98thPercentile(),
+ metric.get99thPercentile(),
+ metric.getMin(),
+ metric.getMax()};
+ }
+
+ public double[] metricPercentilesAsArray(CassandraMetricsRegistry.JmxTimerMBean metric)
{
return new double[]{ metric.get50thPercentile(),
metric.get75thPercentile(),
@@ -1242,36 +1248,3 @@ class ColumnFamilyStoreMBeanIterator implements Iterator<Map.Entry<String, Colum
throw new UnsupportedOperationException();
}
}
-
-class ThreadPoolProxyMBeanIterator implements Iterator<Map.Entry<String, JMXEnabledThreadPoolExecutorMBean>>
-{
- private final Iterator<ObjectName> resIter;
- private final MBeanServerConnection mbeanServerConn;
-
- public ThreadPoolProxyMBeanIterator(MBeanServerConnection mbeanServerConn)
- throws MalformedObjectNameException, NullPointerException, IOException
- {
- Set<ObjectName> requests = mbeanServerConn.queryNames(new ObjectName("org.apache.cassandra.request:type=*"), null);
- Set<ObjectName> internal = mbeanServerConn.queryNames(new ObjectName("org.apache.cassandra.internal:type=*"), null);
- resIter = Iterables.concat(requests, internal).iterator();
- this.mbeanServerConn = mbeanServerConn;
- }
-
- public boolean hasNext()
- {
- return resIter.hasNext();
- }
-
- public Map.Entry<String, JMXEnabledThreadPoolExecutorMBean> next()
- {
- ObjectName objectName = resIter.next();
- String poolName = objectName.getKeyProperty("type");
- JMXEnabledThreadPoolExecutorMBean threadPoolProxy = JMX.newMBeanProxy(mbeanServerConn, objectName, JMXEnabledThreadPoolExecutorMBean.class);
- return new AbstractMap.SimpleImmutableEntry<String, JMXEnabledThreadPoolExecutorMBean>(poolName, threadPoolProxy);
- }
-
- public void remove()
- {
- throw new UnsupportedOperationException();
- }
-}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index 18feac7..e99fd15 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -31,24 +31,22 @@ import javax.management.openmbean.*;
import com.google.common.base.Joiner;
import com.google.common.base.Throwables;
-
import com.google.common.collect.*;
-import com.yammer.metrics.reporting.JmxReporter;
-
import io.airlift.command.*;
+
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
-import org.apache.cassandra.concurrent.JMXEnabledThreadPoolExecutorMBean;
+import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.db.ColumnFamilyStoreMBean;
import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.db.compaction.CompactionManagerMBean;
import org.apache.cassandra.db.compaction.OperationType;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.locator.EndpointSnitchInfoMBean;
-
-import org.apache.cassandra.metrics.ColumnFamilyMetrics.Sampler;
-
+import org.apache.cassandra.metrics.CassandraMetricsRegistry;
+import org.apache.cassandra.metrics.ColumnFamilyMetrics;
import org.apache.cassandra.net.MessagingServiceMBean;
import org.apache.cassandra.repair.messages.RepairOption;
import org.apache.cassandra.repair.RepairParallelism;
@@ -60,7 +58,7 @@ import org.apache.cassandra.utils.EstimatedHistogram;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.JVMStabilityInspector;
-import org.apache.commons.lang3.ArrayUtils;
+import static org.apache.cassandra.metrics.ColumnFamilyMetrics.Sampler;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.base.Throwables.getStackTraceAsString;
@@ -739,8 +737,8 @@ public class NodeTool
for (ColumnFamilyStoreMBean cfstore : columnFamilies)
{
String cfName = cfstore.getColumnFamilyName();
- long writeCount = ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getCount();
- long readCount = ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getCount();
+ long writeCount = ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getCount();
+ long readCount = ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getCount();
if (readCount > 0)
{
@@ -821,12 +819,12 @@ public class NodeTool
System.out.println("\t\tMemtable data size: " + format((Long) probe.getColumnFamilyMetric(keyspaceName, cfName, "MemtableLiveDataSize"), humanReadable));
System.out.println("\t\tMemtable off heap memory used: " + format(memtableOffHeapSize, humanReadable));
System.out.println("\t\tMemtable switch count: " + probe.getColumnFamilyMetric(keyspaceName, cfName, "MemtableSwitchCount"));
- System.out.println("\t\tLocal read count: " + ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getCount());
- double localReadLatency = ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getMean() / 1000;
+ System.out.println("\t\tLocal read count: " + ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getCount());
+ double localReadLatency = ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "ReadLatency")).getMean() / 1000;
double localRLatency = localReadLatency > 0 ? localReadLatency : Double.NaN;
System.out.printf("\t\tLocal read latency: %01.3f ms%n", localRLatency);
- System.out.println("\t\tLocal write count: " + ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getCount());
- double localWriteLatency = ((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getMean() / 1000;
+ System.out.println("\t\tLocal write count: " + ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getCount());
+ double localWriteLatency = ((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "WriteLatency")).getMean() / 1000;
double localWLatency = localWriteLatency > 0 ? localWriteLatency : Double.NaN;
System.out.printf("\t\tLocal write latency: %01.3f ms%n", localWLatency);
System.out.println("\t\tPending flushes: " + probe.getColumnFamilyMetric(keyspaceName, cfName, "PendingFlushes"));
@@ -840,10 +838,10 @@ public class NodeTool
System.out.println("\t\tCompacted partition minimum bytes: " + format((Long) probe.getColumnFamilyMetric(keyspaceName, cfName, "MinRowSize"), humanReadable));
System.out.println("\t\tCompacted partition maximum bytes: " + format((Long) probe.getColumnFamilyMetric(keyspaceName, cfName, "MaxRowSize"), humanReadable));
System.out.println("\t\tCompacted partition mean bytes: " + format((Long) probe.getColumnFamilyMetric(keyspaceName, cfName, "MeanRowSize"), humanReadable));
- JmxReporter.HistogramMBean histogram = (JmxReporter.HistogramMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "LiveScannedHistogram");
+ CassandraMetricsRegistry.JmxHistogramMBean histogram = (CassandraMetricsRegistry.JmxHistogramMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "LiveScannedHistogram");
System.out.println("\t\tAverage live cells per slice (last five minutes): " + histogram.getMean());
System.out.println("\t\tMaximum live cells per slice (last five minutes): " + histogram.getMax());
- histogram = (JmxReporter.HistogramMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "TombstoneScannedHistogram");
+ histogram = (CassandraMetricsRegistry.JmxHistogramMBean) probe.getColumnFamilyMetric(keyspaceName, cfName, "TombstoneScannedHistogram");
System.out.println("\t\tAverage tombstones per slice (last five minutes): " + histogram.getMean());
System.out.println("\t\tMaximum tombstones per slice (last five minutes): " + histogram.getMax());
@@ -945,7 +943,7 @@ public class NodeTool
@Option(name = "-k", description = "Number of the top partitions to list (Default: 10)")
private int topCount = 10;
@Option(name = "-a", description = "Comma separated list of samplers to use (Default: all)")
- private String samplers = join(Sampler.values(), ',');
+ private String samplers = join(ColumnFamilyMetrics.Sampler.values(), ',');
@Override
public void execute(NodeProbe probe)
{
@@ -1083,9 +1081,9 @@ public class NodeTool
}
String[] percentiles = new String[]{"50%", "75%", "95%", "98%", "99%", "Min", "Max"};
- double[] readLatency = probe.metricPercentilesAsArray((JmxReporter.HistogramMBean) probe.getColumnFamilyMetric(keyspace, cfname, "ReadLatency"));
- double[] writeLatency = probe.metricPercentilesAsArray((JmxReporter.TimerMBean) probe.getColumnFamilyMetric(keyspace, cfname, "WriteLatency"));
- double[] sstablesPerRead = probe.metricPercentilesAsArray((JmxReporter.HistogramMBean) probe.getColumnFamilyMetric(keyspace, cfname, "SSTablesPerReadHistogram"));
+ double[] readLatency = probe.metricPercentilesAsArray((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspace, cfname, "ReadLatency"));
+ double[] writeLatency = probe.metricPercentilesAsArray((CassandraMetricsRegistry.JmxTimerMBean) probe.getColumnFamilyMetric(keyspace, cfname, "WriteLatency"));
+ double[] sstablesPerRead = probe.metricPercentilesAsArray((CassandraMetricsRegistry.JmxHistogramMBean) probe.getColumnFamilyMetric(keyspace, cfname, "SSTablesPerReadHistogram"));
System.out.println(format("%s/%s histograms", keyspace, cfname));
System.out.println(format("%-10s%10s%18s%18s%18s%18s",
@@ -2565,19 +2563,15 @@ public class NodeTool
{
System.out.printf("%-25s%10s%10s%15s%10s%18s%n", "Pool Name", "Active", "Pending", "Completed", "Blocked", "All time blocked");
- Iterator<Map.Entry<String, JMXEnabledThreadPoolExecutorMBean>> threads = probe.getThreadPoolMBeanProxies();
- while (threads.hasNext())
+ for (Stage stage : Stage.jmxEnabledStages())
{
- Map.Entry<String, JMXEnabledThreadPoolExecutorMBean> thread = threads.next();
- String poolName = thread.getKey();
- JMXEnabledThreadPoolExecutorMBean threadPoolProxy = thread.getValue();
System.out.printf("%-25s%10s%10s%15s%10s%18s%n",
- poolName,
- threadPoolProxy.getActiveCount(),
- threadPoolProxy.getPendingTasks(),
- threadPoolProxy.getCompletedTasks(),
- threadPoolProxy.getCurrentlyBlockedTasks(),
- threadPoolProxy.getTotalBlockedTasks());
+ stage.getJmxName(),
+ probe.getThreadPoolMetric(stage, "ActiveTasks"),
+ probe.getThreadPoolMetric(stage, "PendingTasks"),
+ probe.getThreadPoolMetric(stage, "CompletedTasks"),
+ probe.getThreadPoolMetric(stage, "CurrentlyBlockedTasks"),
+ probe.getThreadPoolMetric(stage, "TotalBlockedTasks"));
}
System.out.printf("%n%-20s%10s%n", "Message type", "Dropped");
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java b/src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java
index 9cac645..4ecd6a7 100644
--- a/src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java
+++ b/src/java/org/apache/cassandra/transport/RequestThreadPoolExecutor.java
@@ -26,7 +26,7 @@ import io.netty.util.concurrent.Future;
import org.apache.cassandra.concurrent.TracingAwareExecutorService;
import org.apache.cassandra.config.DatabaseDescriptor;
-import static org.apache.cassandra.concurrent.JMXEnabledSharedExecutorPool.SHARED;
+import static org.apache.cassandra.concurrent.SharedExecutorPool.SHARED;
public class RequestThreadPoolExecutor extends AbstractEventExecutor
{
@@ -34,8 +34,8 @@ public class RequestThreadPoolExecutor extends AbstractEventExecutor
private final static String THREAD_FACTORY_ID = "Native-Transport-Requests";
private final TracingAwareExecutorService wrapped = SHARED.newExecutor(DatabaseDescriptor.getNativeTransportMaxThreads(),
MAX_QUEUED_REQUESTS,
- THREAD_FACTORY_ID,
- "transport");
+ "transport",
+ THREAD_FACTORY_ID);
public boolean isShuttingDown()
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/utils/StatusLogger.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/StatusLogger.java b/src/java/org/apache/cassandra/utils/StatusLogger.java
index acd923d..a1d5e18 100644
--- a/src/java/org/apache/cassandra/utils/StatusLogger.java
+++ b/src/java/org/apache/cassandra/utils/StatusLogger.java
@@ -19,15 +19,14 @@ package org.apache.cassandra.utils;
import java.lang.management.ManagementFactory;
import java.util.Set;
-import javax.management.JMX;
-import javax.management.MBeanServer;
-import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
+import javax.management.*;
import com.google.common.collect.Iterables;
import org.apache.cassandra.cache.*;
+import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.metrics.ThreadPoolMetrics;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,34 +42,25 @@ public class StatusLogger
{
private static final Logger logger = LoggerFactory.getLogger(StatusLogger.class);
+
public static void log()
{
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
// everything from o.a.c.concurrent
logger.info(String.format("%-25s%10s%10s%15s%10s%18s", "Pool Name", "Active", "Pending", "Completed", "Blocked", "All Time Blocked"));
- Set<ObjectName> request, internal;
- try
- {
- request = server.queryNames(new ObjectName("org.apache.cassandra.request:type=*"), null);
- internal = server.queryNames(new ObjectName("org.apache.cassandra.internal:type=*"), null);
- }
- catch (MalformedObjectNameException e)
- {
- throw new RuntimeException(e);
- }
- for (ObjectName objectName : Iterables.concat(request, internal))
+
+ for (Stage stage : Stage.jmxEnabledStages())
{
- String poolName = objectName.getKeyProperty("type");
- JMXEnabledThreadPoolExecutorMBean threadPoolProxy = JMX.newMBeanProxy(server, objectName, JMXEnabledThreadPoolExecutorMBean.class);
- logger.info(String.format("%-25s%10s%10s%15s%10s%18s",
- poolName,
- threadPoolProxy.getActiveCount(),
- threadPoolProxy.getPendingTasks(),
- threadPoolProxy.getCompletedTasks(),
- threadPoolProxy.getCurrentlyBlockedTasks(),
- threadPoolProxy.getTotalBlockedTasks()));
+ System.out.printf("%-25s%10s%10s%15s%10s%18s%n",
+ stage.getJmxName(),
+ ThreadPoolMetrics.getJmxMetric(server, stage.getJmxType(), stage.getJmxName(), "ActiveTasks"),
+ ThreadPoolMetrics.getJmxMetric(server, stage.getJmxType(), stage.getJmxName(), "PendingTasks"),
+ ThreadPoolMetrics.getJmxMetric(server, stage.getJmxType(), stage.getJmxName(), "CompletedTasks"),
+ ThreadPoolMetrics.getJmxMetric(server, stage.getJmxType(), stage.getJmxName(), "CurrentlyBlockedTasks"),
+ ThreadPoolMetrics.getJmxMetric(server, stage.getJmxType(), stage.getJmxName(), "TotalBlockedTasks"));
}
+
// one offs
logger.info(String.format("%-25s%10s%10s",
"CompactionManager", CompactionManager.instance.getActiveCompactions(), CompactionManager.instance.getPendingTasks()));
@@ -114,7 +104,7 @@ public class StatusLogger
{
logger.info(String.format("%-25s%20s",
cfs.keyspace.getName() + "." + cfs.name,
- cfs.getMemtableColumnsCount() + "," + cfs.getMemtableDataSize()));
+ cfs.metric.memtableColumnsCount.getValue() + "," + cfs.metric.memtableLiveDataSize.getValue()));
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/src/java/org/apache/cassandra/utils/concurrent/WaitQueue.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/concurrent/WaitQueue.java b/src/java/org/apache/cassandra/utils/concurrent/WaitQueue.java
index df3d38d..be271b6 100644
--- a/src/java/org/apache/cassandra/utils/concurrent/WaitQueue.java
+++ b/src/java/org/apache/cassandra/utils/concurrent/WaitQueue.java
@@ -18,13 +18,13 @@
*/
package org.apache.cassandra.utils.concurrent;
-import com.yammer.metrics.core.TimerContext;
-
import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.locks.LockSupport;
+import com.codahale.metrics.Timer;
+
/**
* <p>A relatively easy to use utility for general purpose thread signalling.</p>
* <p>Usage on a thread awaiting a state change using a WaitQueue q is:</p>
@@ -96,7 +96,7 @@ public final class WaitQueue
* or the waiting thread is interrupted.
* @return
*/
- public Signal register(TimerContext context)
+ public Signal register(Timer.Context context)
{
assert context != null;
RegisteredSignal signal = new TimedSignal(context);
@@ -389,9 +389,9 @@ public final class WaitQueue
*/
private final class TimedSignal extends RegisteredSignal
{
- private final TimerContext context;
+ private final Timer.Context context;
- private TimedSignal(TimerContext context)
+ private TimedSignal(Timer.Context context)
{
this.context = context;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/test/long/org/apache/cassandra/concurrent/LongSharedExecutorPoolTest.java
----------------------------------------------------------------------
diff --git a/test/long/org/apache/cassandra/concurrent/LongSharedExecutorPoolTest.java b/test/long/org/apache/cassandra/concurrent/LongSharedExecutorPoolTest.java
index 3453261..fe464c7 100644
--- a/test/long/org/apache/cassandra/concurrent/LongSharedExecutorPoolTest.java
+++ b/test/long/org/apache/cassandra/concurrent/LongSharedExecutorPoolTest.java
@@ -116,7 +116,7 @@ public class LongSharedExecutorPoolTest
final ExecutorService[] executors = new ExecutorService[executorCount];
for (int i = 0 ; i < executors.length ; i++)
{
- executors[i] = JMXEnabledSharedExecutorPool.SHARED.newExecutor(threadCount, maxQueued, "test" + i, "test" + i);
+ executors[i] = SharedExecutorPool.SHARED.newExecutor(threadCount, maxQueued, "test" + i, "test" + i);
threadCounts[i] = threadCount;
workCount[i] = new WeibullDistribution(2, maxQueued);
threadCount *= 2;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8896a70b/test/long/org/apache/cassandra/db/LongFlushMemtableTest.java
----------------------------------------------------------------------
diff --git a/test/long/org/apache/cassandra/db/LongFlushMemtableTest.java b/test/long/org/apache/cassandra/db/LongFlushMemtableTest.java
index fd23f33..24993c8 100644
--- a/test/long/org/apache/cassandra/db/LongFlushMemtableTest.java
+++ b/test/long/org/apache/cassandra/db/LongFlushMemtableTest.java
@@ -78,7 +78,7 @@ public class LongFlushMemtableTest
for (ColumnFamilyStore cfs : ColumnFamilyStore.all())
{
if (cfs.name.startsWith("_CF"))
- flushes += cfs.getMemtableSwitchCount();
+ flushes += cfs.metric.memtableSwitchCount.getCount();
}
assert flushes > 0;
}