You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2023/06/21 01:23:45 UTC

[dubbo] branch 3.2 updated: Disable register if registry disable register (#12579)

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 <jh...@gmail.com>
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;