From acf59ad399846490cdfdb0b2619b165ae1cf420c Mon Sep 17 00:00:00 2001 From: omniCoder77 Date: Tue, 6 Jan 2026 23:07:29 +0530 Subject: [PATCH 1/3] Removed parsing of string for MBean creation --- .../metrics/CassandraMetricsRegistry.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java index 7c69c77d88..5ed9370fd6 100644 --- a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java +++ b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java @@ -21,6 +21,7 @@ import java.lang.reflect.Method; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Optional; @@ -1144,6 +1145,7 @@ public class CassandraMetricsRegistry extends MetricRegistry private final String name; private final String scope; private final String mBeanName; + private volatile ObjectName objectName; private final String systemViewName; /** @@ -1299,25 +1301,26 @@ public class CassandraMetricsRegistry extends MetricRegistry */ public ObjectName getMBeanName() { - - String mname = mBeanName; - - if (mname == null) - mname = getMetricName(); + ObjectName local = objectName; + if (local != null) + return local; try { + Hashtable props = new Hashtable<>(4); + if (scope != null) + props.put("scope", scope); - return new ObjectName(mname); - } catch (MalformedObjectNameException e) + if (!name.isEmpty()) + props.put("name", name); + + local = new ObjectName(group, props); + objectName = local; + return local; + } + catch (MalformedObjectNameException e) { - try - { - return new ObjectName(ObjectName.quote(mname)); - } catch (MalformedObjectNameException e1) - { - throw new RuntimeException(e1); - } + throw new RuntimeException("Invalid JMX ObjectName for metric", e); } } From fb2d0a88fc689e151acb7e1ab83403ee59677e1d Mon Sep 17 00:00:00 2001 From: omniCoder77 Date: Mon, 12 Jan 2026 20:16:12 +0530 Subject: [PATCH 2/3] Fixed missing 'type' property and added quoting for 'name' and 'scope' --- .../apache/cassandra/metrics/CassandraMetricsRegistry.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java index 5ed9370fd6..0ac18599d7 100644 --- a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java +++ b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java @@ -1308,11 +1308,12 @@ public class CassandraMetricsRegistry extends MetricRegistry try { Hashtable props = new Hashtable<>(4); + props.put("type", type); if (scope != null) - props.put("scope", scope); + props.put("scope", ObjectName.quote(scope)); if (!name.isEmpty()) - props.put("name", name); + props.put("name", ObjectName.quote(name)); local = new ObjectName(group, props); objectName = local; From e84e851ecc7a58dd8e0b0c1d380c2455795dd70a Mon Sep 17 00:00:00 2001 From: omniCoder77 Date: Mon, 12 Jan 2026 20:33:21 +0530 Subject: [PATCH 3/3] Fixed missing 'type' property and added quoting for 'name' and 'scope' --- .../org/apache/cassandra/metrics/CassandraMetricsRegistry.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java index 0ac18599d7..fb9c7ebc5a 100644 --- a/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java +++ b/src/java/org/apache/cassandra/metrics/CassandraMetricsRegistry.java @@ -1308,7 +1308,8 @@ public class CassandraMetricsRegistry extends MetricRegistry try { Hashtable props = new Hashtable<>(4); - props.put("type", type); + if (type != null) + props.put("type", type); if (scope != null) props.put("scope", ObjectName.quote(scope));