|
@@ -289,7 +289,7 @@ public class QueueMetrics implements MetricsSource {
|
|
|
metrics =
|
|
|
new QueueMetrics(metricsSystem, queueName, null, false, conf);
|
|
|
users.put(userName, metrics);
|
|
|
- metricsSystem.register(
|
|
|
+ registerMetrics(
|
|
|
sourceName(queueName).append(",user=").append(userName).toString(),
|
|
|
"Metrics for user '"+ userName +"' in queue '"+ queueName +"'",
|
|
|
metrics.tag(QUEUE_INFO, queueName).tag(USER_INFO, userName));
|
|
@@ -334,7 +334,7 @@ public class QueueMetrics implements MetricsSource {
|
|
|
QueueMetrics queueMetrics =
|
|
|
new PartitionQueueMetrics(metricsSystem, this.queueName, parentQueue,
|
|
|
this.enableUserMetrics, this.conf, partition);
|
|
|
- metricsSystem.register(
|
|
|
+ registerMetrics(
|
|
|
pSourceName(partitionJMXStr).append(qSourceName(this.queueName))
|
|
|
.toString(),
|
|
|
"Metrics for queue: " + this.queueName,
|
|
@@ -378,7 +378,7 @@ public class QueueMetrics implements MetricsSource {
|
|
|
|
|
|
// Register with the MetricsSystems
|
|
|
if (metricsSystem != null) {
|
|
|
- metricsSystem.register(pSourceName(partitionJMXStr).toString(),
|
|
|
+ registerMetrics(pSourceName(partitionJMXStr).toString(),
|
|
|
"Metrics for partition: " + partitionJMXStr,
|
|
|
(PartitionQueueMetrics) metrics.tag(PARTITION_INFO,
|
|
|
partitionJMXStr));
|
|
@@ -1359,4 +1359,15 @@ public class QueueMetrics implements MetricsSource {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ protected void registerMetrics(String sourceName, String desc, QueueMetrics metrics) {
|
|
|
+ MetricsSource source = metricsSystem.getSource(sourceName);
|
|
|
+ // Unregister metrics if a source is already present
|
|
|
+ if (source != null) {
|
|
|
+ LOG.info("Unregistering source " + sourceName);
|
|
|
+ metricsSystem.unregisterSource(sourceName);
|
|
|
+ }
|
|
|
+
|
|
|
+ metricsSystem.register(sourceName, desc, metrics);
|
|
|
+ }
|
|
|
}
|