You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2023/09/25 10:43:10 UTC
[dubbo] branch 3.2 updated: Remove identity hash code usage (#13112)
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 <jh...@gmail.com>
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;
}