You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by jx...@apache.org on 2022/06/02 00:11:23 UTC

[helix] branch master updated: Fix issue #2117: improve efficiency of ClusterStatusMonitor and PerInstanceResourceMonitor, plus misc code cleanup (#2118)

This is an automated email from the ASF dual-hosted git repository.

jxue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/master by this push:
     new 6524a34a3 Fix issue #2117: improve efficiency of ClusterStatusMonitor and PerInstanceResourceMonitor, plus misc code cleanup (#2118)
6524a34a3 is described below

commit 6524a34a3d79b41d80cc1efa09b6a16d0f3ec31e
Author: Richard Startin <ri...@startree.ai>
AuthorDate: Thu Jun 2 02:11:18 2022 +0200

    Fix issue #2117: improve efficiency of ClusterStatusMonitor and PerInstanceResourceMonitor, plus misc code cleanup (#2118)
---
 .../monitoring/mbeans/ClusterStatusMonitor.java    |  5 +----
 .../mbeans/PerInstanceResourceMonitor.java         | 23 +++++++++++-----------
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java
index 621710ef7..0207753b8 100644
--- a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java
+++ b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/ClusterStatusMonitor.java
@@ -459,10 +459,7 @@ public class ClusterStatusMonitor implements ClusterStatusMonitorMBean {
           String state = instanceStateMap.get(instance);
           PerInstanceResourceMonitor.BeanName beanName =
               new PerInstanceResourceMonitor.BeanName(_clusterName, instance, resource);
-          if (!beanMap.containsKey(beanName)) {
-            beanMap.put(beanName, new HashMap<Partition, String>());
-          }
-          beanMap.get(beanName).put(partition, state);
+          beanMap.computeIfAbsent(beanName, k -> new HashMap<>()).put(partition, state);
         }
       }
     }
diff --git a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/PerInstanceResourceMonitor.java b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/PerInstanceResourceMonitor.java
index 0b637afbb..4f6decf47 100644
--- a/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/PerInstanceResourceMonitor.java
+++ b/helix-core/src/main/java/org/apache/helix/monitoring/mbeans/PerInstanceResourceMonitor.java
@@ -70,8 +70,7 @@ public class PerInstanceResourceMonitor extends DynamicMBeanProvider {
 
     public ObjectName objectName() {
       try {
-        return new ObjectName(String.format("%s:%s", MonitorDomainNames.ClusterStatus.name(),
-            new BeanName(_clusterName, _instanceName, _resourceName).toString()));
+        return new ObjectName(MonitorDomainNames.ClusterStatus.name() + ":" + this);
       } catch (MalformedObjectNameException e) {
         LOG.error("Failed to create object name for cluster: {}, instance: {}, resource: {}.",
             _clusterName, _instanceName, _resourceName);
@@ -81,7 +80,7 @@ public class PerInstanceResourceMonitor extends DynamicMBeanProvider {
 
     @Override
     public boolean equals(Object obj) {
-      if (obj == null || !(obj instanceof BeanName)) {
+      if (!(obj instanceof BeanName)) {
         return false;
       }
 
@@ -92,14 +91,16 @@ public class PerInstanceResourceMonitor extends DynamicMBeanProvider {
 
     @Override
     public int hashCode() {
-      return toString().hashCode();
+      return 31 * 31 * _clusterName.hashCode()
+          + 31 * _instanceName.hashCode()
+          + _resourceName.hashCode();
     }
 
     @Override
     public String toString() {
-      return String.format("%s=%s,%s=%s,%s=%s", ClusterStatusMonitor.CLUSTER_DN_KEY, _clusterName,
-          ClusterStatusMonitor.INSTANCE_DN_KEY, _instanceName, ClusterStatusMonitor.RESOURCE_DN_KEY,
-          _resourceName);
+      return ClusterStatusMonitor.CLUSTER_DN_KEY + "=" + _clusterName + ","
+          + ClusterStatusMonitor.INSTANCE_DN_KEY + "=" + _instanceName + ","
+          + ClusterStatusMonitor.RESOURCE_DN_KEY + "=" + _resourceName;
     }
   }
 
@@ -115,18 +116,18 @@ public class PerInstanceResourceMonitor extends DynamicMBeanProvider {
     _tags = ImmutableList.of(ClusterStatusMonitor.DEFAULT_TAG);
     _participantName = participantName;
     _resourceName = resourceName;
-    _partitions = new SimpleDynamicMetric("PartitionGauge", 0L);
+    _partitions = new SimpleDynamicMetric<>("PartitionGauge", 0L);
   }
 
   @Override
   public String getSensorName() {
     return Joiner.on('.').join(ImmutableList
         .of(ClusterStatusMonitor.PARTICIPANT_STATUS_KEY, _clusterName, serializedTags(),
-            _participantName, _resourceName)).toString();
+            _participantName, _resourceName));
   }
 
   private String serializedTags() {
-    return Joiner.on('|').skipNulls().join(_tags).toString();
+    return Joiner.on('|').skipNulls().join(_tags);
   }
 
   public String getInstanceName() {
@@ -161,7 +162,7 @@ public class PerInstanceResourceMonitor extends DynamicMBeanProvider {
       }
       cnt++;
     }
-    _partitions.updateValue(Long.valueOf(cnt));
+    _partitions.updateValue((long) cnt);
   }
 
   @Override