This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new da801bf177 Remove identity hash code usage (#13112)
da801bf177 is described below
commit da801bf17755458a9cdaa06b2e05923453ab5bf3
Author: Albumen Kevin <[email protected]>
AuthorDate: Mon Sep 25 18:43:04 2023 +0800
Remove identity hash code usage (#13112)
---
.../common/url/component/param/DynamicParamTable.java | 19 -------------------
.../metrics/listener/AbstractMetricsListener.java | 11 ++++-------
2 files changed, 4 insertions(+), 26 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/param/DynamicParamTable.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/param/DynamicParamTable.java
index 56fa54079b..c023e9c76f 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/param/DynamicParamTable.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/url/component/param/DynamicParamTable.java
@@ -18,7 +18,6 @@ package org.apache.dubbo.common.url.component.param;
import org.apache.dubbo.rpc.model.FrameworkModel;
-import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
@@ -31,10 +30,6 @@ import java.util.TreeMap;
* Not support method parameters
*/
public final class DynamicParamTable {
- /**
- * Keys array, value is key's identity hashcode ( assume key is in
constant pool )
- */
- private static int[] KEYS;
/**
* Keys array, value is string
*/
@@ -54,13 +49,6 @@ public final class DynamicParamTable {
if (!enabled) {
return -1;
}
- // assume key is in constant pool
- int identityHashCode = System.identityHashCode(key);
- int index = Arrays.binarySearch(KEYS, identityHashCode);
- if (index >= 0) {
- return index;
- }
- // fallback to key2index map
Integer indexFromMap = KEY2INDEX.get(key);
return indexFromMap == null ? -1 : indexFromMap;
}
@@ -97,13 +85,6 @@ public final class DynamicParamTable {
resultMap.put(keys.get(i), values.get(i));
}
- // assume key is in constant pool, store identity hashCode as index
- KEYS = resultMap.keySet()
- .stream()
- .map(System::identityHashCode)
- .mapToInt(x -> x)
- .toArray();
-
ORIGIN_KEYS = resultMap.keySet().toArray(new String[0]);
VALUES = resultMap.values().toArray(new ParamValue[0]);
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/AbstractMetricsListener.java
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/AbstractMetricsListener.java
index 0a3b9e65f9..7dc5ed2f77 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/AbstractMetricsListener.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/AbstractMetricsListener.java
@@ -25,17 +25,14 @@ import java.util.concurrent.ConcurrentHashMap;
public abstract class AbstractMetricsListener<E extends MetricsEvent>
implements MetricsListener<E> {
- private final Map<Integer, Boolean> eventMatchCache = new
ConcurrentHashMap<>();
+ private final Map<Class<?>, Boolean> eventMatchCache = new
ConcurrentHashMap<>();
/**
- * Only interested in events of the current listener's generic parameter
type
+ * Whether to support the general determination of event points depends on
the event type
*/
public boolean isSupport(MetricsEvent event) {
- Boolean eventMatch =
eventMatchCache.get(System.identityHashCode(event.getClass()));
- if (eventMatch == null) {
- eventMatch = ReflectionUtils.match(getClass(),
AbstractMetricsListener.class, event);
- eventMatchCache.put(System.identityHashCode(event.getClass()),
eventMatch);
- }
+ Boolean eventMatch = eventMatchCache.computeIfAbsent(event.getClass(),
+ clazz -> ReflectionUtils.match(getClass(),
AbstractMetricsListener.class, event));
return event.isAvailable() && eventMatch;
}