From 4402ee0bbe6c141c1e1fd68c74caa2976bde50cd Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Mon, 3 Feb 2020 15:26:13 +0800 Subject: [PATCH 1/8] Polish alibaba/spring-cloud-alibaba/#1192 : [Infrastructure] Upgrade the Dubbo 2.7.4.1 dependencies --- pom.xml | 39 ++++++++++++------- spring-cloud-alibaba-dubbo/pom.xml | 25 ------------ ...gCloudRegistryConfigPropertyCondition.java | 6 +-- ...ebApplicationEnvironmentPostProcessor.java | 12 +++--- .../pom.xml | 12 ------ 5 files changed, 34 insertions(+), 60 deletions(-) diff --git a/pom.xml b/pom.xml index 0b86ba92..104017d2 100644 --- a/pom.xml +++ b/pom.xml @@ -88,8 +88,7 @@ 1.7.25 - 2.7.3 - 2.7.3 + 2.7.4.1 4.0.1 @@ -132,7 +131,7 @@ - + org.springframework.boot spring-boot-dependencies @@ -228,10 +227,31 @@ import + + + org.apache.dubbo + dubbo-dependencies-bom + ${dubbo.version} + pom + import + + + org.springframework + spring-framework-bom + + + + org.apache.dubbo dubbo-spring-boot-starter - ${dubbo-spring-boot.version} + ${dubbo.version} + + + + org.apache.dubbo + dubbo-spring-boot-actuator + ${dubbo.version} @@ -241,15 +261,7 @@ org.springframework - spring - - - javax.servlet - servlet-api - - - log4j - log4j + spring-context @@ -420,5 +432,4 @@ - \ No newline at end of file diff --git a/spring-cloud-alibaba-dubbo/pom.xml b/spring-cloud-alibaba-dubbo/pom.xml index ee71456f..b56f7371 100644 --- a/spring-cloud-alibaba-dubbo/pom.xml +++ b/spring-cloud-alibaba-dubbo/pom.xml @@ -13,30 +13,6 @@ spring-cloud-alibaba-dubbo Spring Cloud Alibaba Dubbo - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - - org.apache.dubbo - dubbo-dependencies-bom - ${dubbo.version} - pom - import - - - - - @@ -162,7 +138,6 @@ org.apache.dubbo dubbo-spring-boot-actuator - ${dubbo-spring-boot.version} true diff --git a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/condition/MissingSpringCloudRegistryConfigPropertyCondition.java b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/condition/MissingSpringCloudRegistryConfigPropertyCondition.java index 59890429..0ea71581 100644 --- a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/condition/MissingSpringCloudRegistryConfigPropertyCondition.java +++ b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/condition/MissingSpringCloudRegistryConfigPropertyCondition.java @@ -29,7 +29,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.util.StringUtils; import static com.alibaba.cloud.dubbo.registry.SpringCloudRegistryFactory.PROTOCOL; -import static org.apache.dubbo.config.spring.util.PropertySourcesUtils.getSubProperties; +import static org.apache.dubbo.config.spring.util.PropertySourcesUtils.getPrefixedProperties; /** * Missing {@link SpringCloudRegistry} Property {@link Condition}. @@ -61,8 +61,8 @@ public class MissingSpringCloudRegistryConfigPropertyCondition "'spring-cloud' protocol was found from 'dubbo.registry.address'"); } - Map properties = getSubProperties(environment, - "dubbo.registries."); + Map properties = getPrefixedProperties( + environment.getPropertySources(), "dubbo.registries."); boolean found = properties.entrySet().stream().anyMatch(entry -> { String key = entry.getKey(); diff --git a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/env/DubboNonWebApplicationEnvironmentPostProcessor.java b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/env/DubboNonWebApplicationEnvironmentPostProcessor.java index 77b7c942..4de58946 100644 --- a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/env/DubboNonWebApplicationEnvironmentPostProcessor.java +++ b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/env/DubboNonWebApplicationEnvironmentPostProcessor.java @@ -35,7 +35,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_PROTOCOL; -import static org.apache.dubbo.config.spring.util.PropertySourcesUtils.getSubProperties; +import static org.apache.dubbo.config.spring.util.PropertySourcesUtils.getPrefixedProperties; /** * Dubbo {@link WebApplicationType#NONE Non-Web Application} @@ -88,7 +88,7 @@ public class DubboNonWebApplicationEnvironmentPostProcessor WebApplicationType webApplicationType = application.getWebApplicationType(); if (!WebApplicationType.NONE.equals(webApplicationType)) { // Just works in - // Non-Web Application + // Non-Web Application if (logger.isDebugEnabled()) { logger.debug( "Current application is a Web Application, the process will be ignored."); @@ -149,8 +149,8 @@ public class DubboNonWebApplicationEnvironmentPostProcessor String restPort = null; - Map subProperties = getSubProperties(environment, - PROTOCOLS_PROPERTY_NAME_PREFIX); + Map subProperties = getPrefixedProperties( + environment.getPropertySources(), PROTOCOLS_PROPERTY_NAME_PREFIX); Properties properties = new Properties(); @@ -158,8 +158,8 @@ public class DubboNonWebApplicationEnvironmentPostProcessor for (String propertyName : properties.stringPropertyNames()) { if (propertyName.endsWith(PROTOCOL_NAME_PROPERTY_NAME_SUFFIX)) { // protocol - // name - // property + // name + // property String protocol = properties.getProperty(propertyName); if (isRestProtocol(protocol)) { String beanName = resolveBeanName(propertyName); diff --git a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml index 94d39bb8..8bc3c8ca 100644 --- a/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml +++ b/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/spring-cloud-dubbo-provider-sample/pom.xml @@ -136,18 +136,6 @@ - - - - org.apache.dubbo - dubbo-bom - ${dubbo.version} - pom - import - - - - From cd96dd968b2853d57b9540f5b06017b349c0c7c6 Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 12:34:44 +0800 Subject: [PATCH 2/8] Polish alibaba/spring-cloud-alibaba/#1193 : [Issue] The configuration class NacosConfiguration did not be registered --- .../autoconfigure/DubboServiceDiscoveryAutoConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceDiscoveryAutoConfiguration.java b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceDiscoveryAutoConfiguration.java index 18315fd6..de8fb254 100644 --- a/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceDiscoveryAutoConfiguration.java +++ b/spring-cloud-alibaba-dubbo/src/main/java/com/alibaba/cloud/dubbo/autoconfigure/DubboServiceDiscoveryAutoConfiguration.java @@ -118,7 +118,7 @@ public class DubboServiceDiscoveryAutoConfiguration { /** * NacosDiscoveryAutoConfiguration. */ - public static final String NACOS_DISCOVERY_AUTO_CONFIGURATION_CLASS_NAME = "com.alibaba.cloud.nacos.NacosDiscoveryAutoConfiguration"; + public static final String NACOS_DISCOVERY_AUTO_CONFIGURATION_CLASS_NAME = "com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration"; private final DubboServiceMetadataRepository dubboServiceMetadataRepository; From 6b3b017209f7d3f8fb2bcc16615a3fe618935a1e Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 13:51:00 +0800 Subject: [PATCH 3/8] Polish alibaba/spring-cloud-alibaba/#1132 : [Nacos Discovery] NacosServiceRegistry throw Exception when register failed --- .../alibaba/cloud/nacos/registry/NacosServiceRegistry.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java index af81f0ac..b0974a55 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/registry/NacosServiceRegistry.java @@ -28,6 +28,8 @@ import org.springframework.cloud.client.serviceregistry.Registration; import org.springframework.cloud.client.serviceregistry.ServiceRegistry; import org.springframework.util.StringUtils; +import static org.springframework.util.ReflectionUtils.rethrowRuntimeException; + /** * @author xiaojing * @author Mercy @@ -66,6 +68,9 @@ public class NacosServiceRegistry implements ServiceRegistry { catch (Exception e) { log.error("nacos registry, {} register failed...{},", serviceId, registration.toString(), e); + // rethrow a RuntimeException if the registration is failed. + // issue : https://github.com/alibaba/spring-cloud-alibaba/issues/1132 + rethrowRuntimeException(e); } } From 5b8d25ef9c95913e660078bc21979e150b35240a Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 15:19:56 +0800 Subject: [PATCH 4/8] Polish alibaba/spring-cloud-alibaba/#1194 : [Enhancement] NacosWatch optimization --- .../NacosDiscoveryClientConfiguration.java | 10 +++++---- .../cloud/nacos/discovery/NacosWatch.java | 22 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java index c030336d..6ac2b159 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfiguration.java @@ -19,6 +19,7 @@ package com.alibaba.cloud.nacos.discovery; import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -30,6 +31,7 @@ import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; /** * @author xiaojing @@ -52,10 +54,10 @@ public class NacosDiscoveryClientConfiguration { @Bean @ConditionalOnMissingBean - @ConditionalOnProperty(value = "spring.cloud.nacos.discovery.watch.enabled", - matchIfMissing = true) - public NacosWatch nacosWatch(NacosDiscoveryProperties nacosDiscoveryProperties) { - return new NacosWatch(nacosDiscoveryProperties); + @ConditionalOnProperty(value = "spring.cloud.nacos.discovery.watch.enabled", matchIfMissing = true) + public NacosWatch nacosWatch(NacosDiscoveryProperties nacosDiscoveryProperties, + ObjectProvider taskScheduler) { + return new NacosWatch(nacosDiscoveryProperties, taskScheduler); } } diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java index 36761d47..edfa637f 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/NacosWatch.java @@ -16,18 +16,15 @@ package com.alibaba.cloud.nacos.discovery; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; -import com.alibaba.nacos.api.naming.listener.EventListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.cloud.client.discovery.event.HeartbeatEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.ApplicationEventPublisherAware; @@ -54,10 +51,6 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl private ScheduledFuture watchFuture; - private Set cacheServices = new HashSet<>(); - - private HashMap subscribeListeners = new HashMap<>(); - public NacosWatch(NacosDiscoveryProperties properties) { this(properties, getTaskScheduler()); } @@ -67,8 +60,21 @@ public class NacosWatch implements ApplicationEventPublisherAware, SmartLifecycl this.taskScheduler = taskScheduler; } + /** + * The constructor with {@link NacosDiscoveryProperties} bean and the optional + * {@link TaskScheduler} bean + * @param properties {@link NacosDiscoveryProperties} bean + * @param taskScheduler the optional {@link TaskScheduler} bean + * @since 2.2.0 + */ + public NacosWatch(NacosDiscoveryProperties properties, + ObjectProvider taskScheduler) { + this(properties, taskScheduler.getIfAvailable(NacosWatch::getTaskScheduler)); + } + private static ThreadPoolTaskScheduler getTaskScheduler() { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); + taskScheduler.setBeanName("Nacso-Watch-Task-Scheduler"); taskScheduler.initialize(); return taskScheduler; } From f6e8482e2cccbb1e67ad818b9035461058954748 Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 15:23:40 +0800 Subject: [PATCH 5/8] Polish alibaba/spring-cloud-alibaba/#1194 : [Enhancement] NacosWatch optimization --- .../NacosDiscoveryClientConfigurationTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfigurationTest.java b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfigurationTest.java index 92e93a1a..862799cd 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfigurationTest.java +++ b/spring-cloud-alibaba-nacos-discovery/src/test/java/com/alibaba/cloud/nacos/discovery/NacosDiscoveryClientConfigurationTest.java @@ -22,6 +22,9 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.commons.util.UtilAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import static org.assertj.core.api.Assertions.assertThat; @@ -33,7 +36,12 @@ public class NacosDiscoveryClientConfigurationTest { private ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(UtilAutoConfiguration.class, NacosDiscoveryAutoConfiguration.class, - NacosDiscoveryClientConfiguration.class)); + NacosDiscoveryClientConfiguration.class, this.getClass())); + + @Bean + public TaskScheduler taskScheduler() { + return new ThreadPoolTaskScheduler(); + } @Test public void testDefaultInitialization() { From d1e4711e98c48a9f4e76a5a83acfbb51d511efbc Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 16:21:55 +0800 Subject: [PATCH 6/8] Polish alibaba/spring-cloud-alibaba/#902 : [Nacos Discovery] create NacosDiscoveryHealthIndicator --- .../health/NacosDiscoveryHealthIndicator.java | 61 +++++++++++++++++++ ...cosDiscoveryEndpointAutoConfiguration.java | 9 +++ 2 files changed, 70 insertions(+) create mode 100644 spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java new file mode 100644 index 00000000..5c36ac42 --- /dev/null +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java @@ -0,0 +1,61 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.cloud.nacos.discovery.actuate.health; + +import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.nacos.api.naming.NamingService; + +import org.springframework.boot.actuate.health.AbstractHealthIndicator; +import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; + +/** + * The {@link HealthIndicator} for Nacos Discovery + * + * @since 2.2.0 + * + * @see HealthIndicator + */ +public class NacosDiscoveryHealthIndicator extends AbstractHealthIndicator { + + private final NacosDiscoveryProperties nacosDiscoveryProperties; + + public NacosDiscoveryHealthIndicator( + NacosDiscoveryProperties nacosDiscoveryProperties) { + this.nacosDiscoveryProperties = nacosDiscoveryProperties; + } + + @Override + protected void doHealthCheck(Health.Builder builder) throws Exception { + NamingService namingService = nacosDiscoveryProperties.namingServiceInstance(); + // Just return "UP" or "DOWN" + String status = namingService.getServerStatus(); + // Set the status to Builder + builder.status(status); + switch (status) { + case "UP": + builder.up(); + break; + case "DOWN": + builder.down(); + break; + default: + builder.unknown(); + break; + } + } +} diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java index 0fdffd99..823c8e5d 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java @@ -18,9 +18,12 @@ package com.alibaba.cloud.nacos.endpoint; import com.alibaba.cloud.nacos.ConditionalOnNacosDiscoveryEnabled; import com.alibaba.cloud.nacos.NacosDiscoveryProperties; +import com.alibaba.cloud.nacos.discovery.actuate.health.NacosDiscoveryHealthIndicator; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; +import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; +import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; @@ -42,4 +45,10 @@ public class NacosDiscoveryEndpointAutoConfiguration { return new NacosDiscoveryEndpoint(nacosDiscoveryProperties); } + @Bean + @ConditionalOnEnabledHealthIndicator("nacos-discovery") + public HealthIndicator nacosDiscoveryHealthIndicator( + NacosDiscoveryProperties nacosDiscoveryProperties) { + return new NacosDiscoveryHealthIndicator(nacosDiscoveryProperties); + } } From 4106d48810318688162c66816ba5bd3272c60cf5 Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 18:39:30 +0800 Subject: [PATCH 7/8] Polish alibaba/spring-cloud-alibaba/#902 : [Nacos Discovery] create NacosDiscoveryHealthIndicator --- .../actuate/health/NacosDiscoveryHealthIndicator.java | 11 ++++------- .../NacosDiscoveryEndpointAutoConfiguration.java | 6 +++++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java index 5c36ac42..1854a42a 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java @@ -16,7 +16,6 @@ */ package com.alibaba.cloud.nacos.discovery.actuate.health; -import com.alibaba.cloud.nacos.NacosDiscoveryProperties; import com.alibaba.nacos.api.naming.NamingService; import org.springframework.boot.actuate.health.AbstractHealthIndicator; @@ -26,22 +25,20 @@ import org.springframework.boot.actuate.health.HealthIndicator; /** * The {@link HealthIndicator} for Nacos Discovery * + * @author Mercy * @since 2.2.0 - * * @see HealthIndicator */ public class NacosDiscoveryHealthIndicator extends AbstractHealthIndicator { - private final NacosDiscoveryProperties nacosDiscoveryProperties; + private final NamingService namingService; - public NacosDiscoveryHealthIndicator( - NacosDiscoveryProperties nacosDiscoveryProperties) { - this.nacosDiscoveryProperties = nacosDiscoveryProperties; + public NacosDiscoveryHealthIndicator(NamingService namingService) { + this.namingService = namingService; } @Override protected void doHealthCheck(Health.Builder builder) throws Exception { - NamingService namingService = nacosDiscoveryProperties.namingServiceInstance(); // Just return "UP" or "DOWN" String status = namingService.getServerStatus(); // Set the status to Builder diff --git a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java index 823c8e5d..78635ae1 100644 --- a/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java +++ b/spring-cloud-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosDiscoveryEndpointAutoConfiguration.java @@ -30,7 +30,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** + * The AutoConfiguration class for Nacos Discovery's Endpoints + * * @author xiaojing + * @author Mercy */ @Configuration(proxyBeanMethods = false) @ConditionalOnClass(Endpoint.class) @@ -49,6 +52,7 @@ public class NacosDiscoveryEndpointAutoConfiguration { @ConditionalOnEnabledHealthIndicator("nacos-discovery") public HealthIndicator nacosDiscoveryHealthIndicator( NacosDiscoveryProperties nacosDiscoveryProperties) { - return new NacosDiscoveryHealthIndicator(nacosDiscoveryProperties); + return new NacosDiscoveryHealthIndicator( + nacosDiscoveryProperties.namingServiceInstance()); } } From 74ef969a33272f6ba9d14f416a0f720f36dec26b Mon Sep 17 00:00:00 2001 From: mercyblitz Date: Tue, 4 Feb 2020 18:42:55 +0800 Subject: [PATCH 8/8] Polish alibaba/spring-cloud-alibaba/#1196 : [Issue] NacosConfigHealthIndicator should not be UP in any status --- .../endpoint/NacosConfigHealthIndicator.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosConfigHealthIndicator.java b/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosConfigHealthIndicator.java index 7becf481..482909d8 100644 --- a/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosConfigHealthIndicator.java +++ b/spring-cloud-alibaba-nacos-config/src/main/java/com/alibaba/cloud/nacos/endpoint/NacosConfigHealthIndicator.java @@ -20,9 +20,13 @@ import com.alibaba.nacos.api.config.ConfigService; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health; +import org.springframework.boot.actuate.health.HealthIndicator; /** + * The {@link HealthIndicator} for Nacos Config + * * @author xiaojing + * @author Mercy */ public class NacosConfigHealthIndicator extends AbstractHealthIndicator { @@ -34,10 +38,21 @@ public class NacosConfigHealthIndicator extends AbstractHealthIndicator { @Override protected void doHealthCheck(Health.Builder builder) throws Exception { - builder.up(); - + // Just return "UP" or "DOWN" String status = configService.getServerStatus(); + // Set the status to Builder builder.status(status); + switch (status) { + case "UP": + builder.up(); + break; + case "DOWN": + builder.down(); + break; + default: + builder.unknown(); + break; + } } }