Merge branch 'apache-3.1' into 3.1.1-release
diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index 30a909d..554308d 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -99,7 +99,7 @@
         <httpclient_version>4.5.13</httpclient_version>
         <httpcore_version>4.4.6</httpcore_version>
         <fastjson_version>1.2.83</fastjson_version>
-        <fastjson2_version>2.0.7</fastjson2_version>
+        <fastjson2_version>2.0.14</fastjson2_version>
         <zookeeper_version>3.4.14</zookeeper_version>
         <curator_version>4.2.0</curator_version>
         <curator_test_version>2.12.0</curator_test_version>
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
index 2e22e09..38c8efd 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/DefaultServiceInstance.java
@@ -30,6 +30,7 @@
 import java.util.Objects;
 import java.util.SortedMap;
 import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.ENDPOINTS;
 import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
@@ -71,7 +72,7 @@
     private transient Map<String, String> extendParams;
     private transient List<Endpoint> endpoints;
     private transient ApplicationModel applicationModel;
-    private transient Map<String, InstanceAddressURL> instanceAddressURL;
+    private transient Map<String, InstanceAddressURL> instanceAddressURL = new ConcurrentHashMap<>();
 
     public DefaultServiceInstance() {
     }
@@ -286,20 +287,13 @@
     @Override
     public void setServiceMetadata(MetadataInfo serviceMetadata) {
         this.serviceMetadata = serviceMetadata;
-        this.instanceAddressURL = null;
+        this.instanceAddressURL.clear();
     }
 
     @Override
     public InstanceAddressURL toURL(String protocol) {
-        if(instanceAddressURL == null) {
-            instanceAddressURL = new HashMap<>();
-        }
-        InstanceAddressURL result = instanceAddressURL.getOrDefault(protocol, null);
-        if (result == null) {
-            instanceAddressURL.put(protocol, new InstanceAddressURL(this, serviceMetadata, protocol));
-            result = instanceAddressURL.get(protocol);
-        }
-        return result;
+        return instanceAddressURL.computeIfAbsent(protocol,
+            key -> new InstanceAddressURL(this, serviceMetadata, protocol));
     }
 
     @Override