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 25c2b3808a Disable register if registry disable register (#12579)
25c2b3808a is described below
commit 25c2b3808a03a42c9d2cb2ca3e715b5f9ac043e5
Author: Albumen Kevin <[email protected]>
AuthorDate: Wed Jun 21 09:23:40 2023 +0800
Disable register if registry disable register (#12579)
* Disable register if registry disable register
* Fix tag
* Fix tag
---
.../org/apache/dubbo/config/ServiceConfigBase.java | 20 +++++++++++++++++++-
.../java/org/apache/dubbo/config/ServiceConfig.java | 10 +++++++---
.../dubbo/config/deploy/DefaultModuleDeployer.java | 2 +-
.../java/org/apache/dubbo/registry/Constants.java | 1 +
.../dubbo/registry/support/AbstractRegistry.java | 6 +++---
5 files changed, 31 insertions(+), 8 deletions(-)
diff --git
a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
index 265779ed3f..60c5c641ec 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/ServiceConfigBase.java
@@ -426,7 +426,25 @@ public abstract class ServiceConfigBase<T> extends
AbstractServiceConfig {
public abstract boolean isUnexported();
+ /**
+ * Export service to network
+ *
+ * @param register Whether register service to registry. If false, can be
registered manually
+ * through the {@link ServiceConfigBase#register(boolean)}
API.
+ */
public abstract void export(boolean register);
- public abstract void register();
+ /**
+ * Register delay published service to registry.
+ */
+ public final void register() {
+ register(false);
+ }
+
+ /**
+ * Register delay published service to registry.
+ *
+ * @param onlyDefault only register those services that export with
configured register false
+ */
+ public abstract void register(boolean onlyDefault);
}
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
index a382c2fdb4..b22b0d2ab3 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java
@@ -57,10 +57,10 @@ import java.beans.Transient;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.TreeSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.TreeSet;
import java.util.UUID;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -99,6 +99,7 @@ import static
org.apache.dubbo.config.Constants.DUBBO_PORT_TO_BIND;
import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_REGISTRY;
import static org.apache.dubbo.config.Constants.SCOPE_NONE;
import static org.apache.dubbo.registry.Constants.REGISTER_KEY;
+import static org.apache.dubbo.registry.Constants.REGISTER_ORIGIN_KEY;
import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;
import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;
import static org.apache.dubbo.remoting.Constants.IS_PU_SERVER_KEY;
@@ -310,7 +311,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
}
@Override
- public void register() {
+ public void register(boolean onlyDefault) {
if (!this.exported) {
return;
}
@@ -321,7 +322,9 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
}
for (Exporter<?> exporter : exporters) {
- exporter.register();
+ if (!onlyDefault ||
exporter.getInvoker().getUrl().getParameter(REGISTER_ORIGIN_KEY, true)) {
+ exporter.register();
+ }
}
}
}
@@ -813,6 +816,7 @@ public class ServiceConfig<T> extends ServiceConfigBase<T> {
@SuppressWarnings({"unchecked", "rawtypes"})
private void doExportUrl(URL url, boolean withMetaData, boolean register) {
if (!register) {
+ url = url.addParameter(REGISTER_ORIGIN_KEY,
url.getParameter(REGISTER_KEY, true));
url = url.addParameter(REGISTER_KEY, false);
}
Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class)
interfaceClass, url);
diff --git
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
index 6bde316558..004be0e224 100644
---
a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
+++
b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/deploy/DefaultModuleDeployer.java
@@ -441,7 +441,7 @@ public class DefaultModuleDeployer extends
AbstractDeployer<ModuleModel> impleme
if (!sc.isExported()) {
return;
}
- sc.register();
+ sc.register(true);
}
private void unexportServices() {
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/Constants.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/Constants.java
index d21534436c..be991b256e 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/Constants.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/Constants.java
@@ -21,6 +21,7 @@ public interface Constants {
String REGISTER_IP_KEY = "register.ip";
String REGISTER_KEY = "register";
+ String REGISTER_ORIGIN_KEY = "register_origin";
String SUBSCRIBE_KEY = "subscribe";
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
index 3a68a26433..1ba9b330b8 100644
---
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
+++
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
@@ -61,12 +61,12 @@ import static
org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
import static
org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;
import static org.apache.dubbo.common.constants.CommonConstants.FILE_KEY;
import static
org.apache.dubbo.common.constants.CommonConstants.REGISTRY_LOCAL_FILE_CACHE_ENABLED;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.INTERNAL_ERROR;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_EMPTY_ADDRESS;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_NOTIFY_EVENT;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_DELETE_LOCKFILE;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_DESTROY_UNREGISTER_URL;
+import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_NOTIFY_EVENT;
import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_READ_WRITE_CACHE_FILE;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.REGISTRY_FAILED_DELETE_LOCKFILE;
-import static
org.apache.dubbo.common.constants.LoggerCodeConstants.INTERNAL_ERROR;
import static org.apache.dubbo.common.constants.RegistryConstants.ACCEPTS_KEY;
import static
org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;
import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;