From c5b1e8e4e4285a93c42ce8afa4e1bb1b378c5cfb Mon Sep 17 00:00:00 2001 From: shedfreewu Date: Mon, 5 Jan 2026 20:04:09 +0800 Subject: [PATCH] fix review. --- .../ServiceInstanceChangeCallbackManager.java | 14 +++++- .../ServiceInstanceChangeCallbackTest.java | 44 +++++++++++++++++++ .../src/test/resources/application-test.yml | 2 + 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackManager.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackManager.java index a0eb0e1cb..13d5cf387 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackManager.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackManager.java @@ -105,7 +105,19 @@ public class ServiceInstanceChangeCallbackManager implements ApplicationListener if (clz.isAnnotationPresent(ServiceInstanceChangeListener.class)) { ServiceInstanceChangeListener serviceInstanceChangeListener = clz.getAnnotation(ServiceInstanceChangeListener.class); serviceName = serviceInstanceChangeListener.serviceName(); - serviceName = environment.resolvePlaceholders(serviceName); + String message = null; + try { + serviceName = environment.resolveRequiredPlaceholders(serviceName); + } + catch (Exception e) { + // resolve failed, reset service name. + message = e.getMessage(); + serviceName = null; + } + if (StringUtils.isBlank(serviceName)) { + LOG.warn("resolve service name failed, bean name:{}, config service name:{}, message:{}", + beanName, serviceInstanceChangeListener.serviceName(), message); + } } if (StringUtils.isBlank(serviceName)) { diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackTest.java index c8cf0c182..24b2ef674 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/refresh/ServiceInstanceChangeCallbackTest.java @@ -63,6 +63,8 @@ public class ServiceInstanceChangeCallbackTest { // Verify assertThat(callbackMap.containsKey("java_provider_test")).isTrue(); assertThat(callbackMap.containsKey("QuickstartCalleeService")).isTrue(); + // ignore error and empty + assertThat(callbackMap.size()).isEqualTo(2); } catch (Exception e) { @@ -83,6 +85,21 @@ public class ServiceInstanceChangeCallbackTest { return new CalleeServiceChangeCallback(); } + @Bean + public ErrorServiceChangeCallback errorServiceChangeCallback() { + return new ErrorServiceChangeCallback(); + } + + @Bean + public EmptyServiceChangeCallback emptyServiceChangeCallback() { + return new EmptyServiceChangeCallback(); + } + + @Bean + public ParsingEmptyServiceChangeCallback parseEmptyServiceChangeCallback() { + return new ParsingEmptyServiceChangeCallback(); + } + @Bean public TestBeanPostProcessor testBeanPostProcessor() { return new TestBeanPostProcessor(); @@ -99,6 +116,33 @@ public class ServiceInstanceChangeCallbackTest { } } + @ServiceInstanceChangeListener(serviceName = "${error.name}") + static class ErrorServiceChangeCallback implements ServiceInstanceChangeCallback { + + @Override + public void callback(List currentServiceInstances, List addServiceInstances, List deleteServiceInstances) { + + } + } + + @ServiceInstanceChangeListener(serviceName = "${test.empty}") + static class ParsingEmptyServiceChangeCallback implements ServiceInstanceChangeCallback { + + @Override + public void callback(List currentServiceInstances, List addServiceInstances, List deleteServiceInstances) { + + } + } + + @ServiceInstanceChangeListener(serviceName = "") + static class EmptyServiceChangeCallback implements ServiceInstanceChangeCallback { + + @Override + public void callback(List currentServiceInstances, List addServiceInstances, List deleteServiceInstances) { + + } + } + @ServiceInstanceChangeListener(serviceName = "QuickstartCalleeService") static class CalleeServiceChangeCallback implements ServiceInstanceChangeCallback { diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/resources/application-test.yml b/spring-cloud-starter-tencent-polaris-discovery/src/test/resources/application-test.yml index 81ab48154..2b418220e 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/resources/application-test.yml +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/resources/application-test.yml @@ -32,3 +32,5 @@ spring: username: nacos password: nacos cluster-name: polaris +test: + empty: \ No newline at end of file