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;
     }
 

Reply via email to