This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new ba878f6 enhance metadata, set separate connection and limited
concurrency(#9572)
ba878f6 is described below
commit ba878f67462817acf3c20cd1d1e178e2b4e6c917
Author: ken.lj <[email protected]>
AuthorDate: Mon Jan 17 09:59:46 2022 +0800
enhance metadata, set separate connection and limited concurrency(#9572)
---
.../apache/dubbo/common/cache/FileCacheStore.java | 30 ++++++++++++++--------
.../ConfigurableMetadataServiceExporter.java | 4 +--
.../dubbo/metadata/AbstractServiceNameMapping.java | 6 +++--
.../registry/client/AbstractServiceDiscovery.java | 2 +-
.../StandardMetadataServiceURLBuilder.java | 4 ++-
5 files changed, 30 insertions(+), 16 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
b/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
index bdf8467..f70f606 100644
---
a/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
+++
b/dubbo-common/src/main/java/org/apache/dubbo/common/cache/FileCacheStore.java
@@ -51,7 +51,6 @@ public class FileCacheStore {
private static final Set<Character> ILLEGALS = new HashSet<Character>();
private static final String SUFFIX = ".dubbo.cache";
- private String fileName;
private File basePath;
private File cacheFile;
private FileLock directoryLock;
@@ -62,7 +61,6 @@ public class FileCacheStore {
basePath = System.getProperty("user.home") + "/.dubbo/";
}
this.basePath = new File(basePath);
- this.fileName = fileName;
this.cacheFile = getFile(fileName, SUFFIX);
if (cacheFile != null && !cacheFile.exists()) {
@@ -77,7 +75,7 @@ public class FileCacheStore {
String line = reader.readLine();
while (line != null && count <= entrySize) {
// content has '=' need to be encoded before write
- if (!line.equals("") && !line.startsWith("#") &&
line.contains("=")) {
+ if (!line.startsWith("#") && line.contains("=")) {
String[] pairs = line.split("=");
properties.put(pairs[0], pairs[1]);
count++;
@@ -117,13 +115,25 @@ public class FileCacheStore {
throw new RuntimeException("Cache store path can't be created:
" + candidate);
}
- try {
- tryFileLock(name);
- } catch (PathNotExclusiveException e) {
- logger.warn("Path '" + basePath
- + "' is already used by an existing Dubbo process.\n"
- + "Please specify another one explicitly.");
- throw e;
+ boolean autoCreated = false;
+ int index = 1;
+ while (true) {
+ try {
+ tryFileLock(name);
+ break;
+ } catch (PathNotExclusiveException e) {
+ autoCreated = true;
+ index++;
+ name += index;
+ if (index > 3) {
+ logger.warn("Path '" + basePath + "/" + name
+ + "' has already used by an existing Dubbo
process.\n Please specify another one explicitly.");
+ throw e;
+ }
+ }
+ }
+ if (autoCreated && index < 3) {
+ logger.warn("Auto-generated cache file name is " + basePath +
"/" + name);
}
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
index 8d7ac95..5991ea1 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java
@@ -170,8 +170,8 @@ public class ConfigurableMetadataServiceExporter {
serviceConfig.setGroup(applicationConfig.getName());
serviceConfig.setVersion(MetadataService.VERSION);
// serviceConfig.setMethods(generateMethodConfig());
- serviceConfig.setConnections(1);
- serviceConfig.setExecutes(100);
+ serviceConfig.setConnections(1); // separate connection
+ serviceConfig.setExecutes(100); // max tasks running at the same time
return serviceConfig;
}
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
index e18d789..1600080 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/AbstractServiceNameMapping.java
@@ -145,8 +145,10 @@ public abstract class AbstractServiceNameMapping
implements ServiceNameMapping,
synchronized (mappingListeners) {
MappingListener listener =
mappingListeners.remove(subscribeURL.getProtocolServiceKey());
//todo, remove listener from remote metadata center
- listener.stop();
- removeListener(subscribeURL, listener);
+ if (listener != null) {
+ listener.stop();
+ removeListener(subscribeURL, listener);
+ }
if (mappingListeners.size() == 0) {
removeCachedMapping(ServiceNameMapping.buildMappingKey(subscribeURL));
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
index 2afed98..e256e04 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/AbstractServiceDiscovery.java
@@ -124,7 +124,7 @@ public abstract class AbstractServiceDiscovery implements
ServiceDiscovery {
@Override
public synchronized void unregister() throws RuntimeException {
- // fixme, this metadata info may still being shared by other instances
+ // fixme, this metadata info might still being shared by other
instances
// unReportMetadata(this.metadataInfo);
doUnregister(this.serviceInstance);
}
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
index 2b14326..5cf3b4a 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java
@@ -43,6 +43,7 @@ import static
org.apache.dubbo.common.utils.StringUtils.isBlank;
import static
org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_TIMEOUT_VALUE;
import static
org.apache.dubbo.metadata.MetadataConstants.METADATA_PROXY_TIMEOUT_KEY;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;
+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;
/**
* Standard Dubbo provider enabling introspection service discovery mode.
@@ -100,7 +101,8 @@ public class StandardMetadataServiceURLBuilder implements
MetadataServiceURLBuil
.setProtocol(protocol)
.setPath(MetadataService.class.getName())
.addParameter(TIMEOUT_KEY,
ConfigurationUtils.get(applicationModel, METADATA_PROXY_TIMEOUT_KEY,
DEFAULT_METADATA_TIMEOUT_VALUE))
- .addParameter(SIDE_KEY, CONSUMER);
+ .addParameter(SIDE_KEY, CONSUMER)
+ .addParameter(CONNECTIONS_KEY, 1);
// add parameters
params.forEach(urlBuilder::addParameter);