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