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