From cf2a63580e1719f4c8a17f7d235ad0cd938bfc5e Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Thu, 22 Jun 2023 14:35:41 +0800 Subject: [PATCH] Service not register to registry if specify register=false (#12584) --- .../main/java/org/apache/dubbo/config/ServiceConfig.java | 6 +++++- .../apache/dubbo/config/utils/ConfigValidationUtils.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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 e3d3028a44..bf73508dd5 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 @@ -512,7 +512,8 @@ public class ServiceConfig extends ServiceConfigBase { providerModel.setDestroyRunner(getDestroyRunner()); repository.registerProvider(providerModel); - List registryURLs = ConfigValidationUtils.loadRegistries(this, true); + List registryURLs = !Boolean.FALSE.equals(isRegister()) ? + ConfigValidationUtils.loadRegistries(this, true) : Collections.emptyList(); MetricsEventBus.post(RegistryEvent.toRsEvent(module.getApplicationModel(), getUniqueServiceName(), protocols.size() * registryURLs.size()), () -> { @@ -546,6 +547,9 @@ public class ServiceConfig extends ServiceConfigBase { processServiceExecutor(url); + if (CollectionUtils.isEmpty(registryURLs)) { + registerType = RegisterTypeEnum.NEVER_REGISTER; + } exportUrl(url, registryURLs, registerType); } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java index 4e9c20d415..7b28528bfb 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java @@ -124,6 +124,7 @@ import static org.apache.dubbo.config.Constants.LAYER_KEY; import static org.apache.dubbo.config.Constants.NAME; import static org.apache.dubbo.config.Constants.ORGANIZATION; import static org.apache.dubbo.config.Constants.OWNER; +import static org.apache.dubbo.config.Constants.REGISTER_KEY; import static org.apache.dubbo.config.Constants.STATUS_KEY; import static org.apache.dubbo.monitor.Constants.LOGSTAT_PROTOCOL; import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY; @@ -225,7 +226,10 @@ public class ConfigValidationUtils { .setScopeModel(interfaceConfig.getScopeModel()) .build(); // provider delay register state will be checked in RegistryProtocol#export - if (provider || url.getParameter(SUBSCRIBE_KEY, true)) { + if (provider && url.getParameter(REGISTER_KEY, true)) { + registryList.add(url); + } + if (!provider && url.getParameter(SUBSCRIBE_KEY, true)) { registryList.add(url); } }