diff --git a/CHANGELOG.md b/CHANGELOG.md index 8da8c490..05ebfe60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,3 +22,4 @@ - [fix:fix SCG report wrong service bug when using IP routing.](https://github.com/Tencent/spring-cloud-tencent/pull/1065) - [fix:fix gray release examples bug.](https://github.com/Tencent/spring-cloud-tencent/pull/1068) - [fix:fix router label feign interceptor order.](https://github.com/Tencent/spring-cloud-tencent/pull/1071) +- [fix:add deregister judgment.](https://github.com/Tencent/spring-cloud-tencent/pull/1075) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistration.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistration.java index c1d4e920..96b35909 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistration.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistration.java @@ -87,6 +87,22 @@ public class PolarisAutoServiceRegistration extends AbstractAutoServiceRegistrat super.registerManagement(); } + @Override + protected void deregister() { + if (!this.registration.isRegisterEnabled()) { + return; + } + super.deregister(); + } + + @Override + protected void deregisterManagement() { + if (!this.registration.isRegisterEnabled()) { + return; + } + super.deregisterManagement(); + } + @Override protected Object getConfiguration() { return this.polarisDiscoveryProperties; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistrationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistrationTest.java index 9d78c903..e1c04a29 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistrationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisAutoServiceRegistrationTest.java @@ -71,6 +71,7 @@ public class PolarisAutoServiceRegistrationTest { @BeforeEach void setUp() { doNothing().when(serviceRegistry).register(nullable(PolarisRegistration.class)); + doNothing().when(serviceRegistry).deregister(nullable(PolarisRegistration.class)); polarisAutoServiceRegistration = new PolarisAutoServiceRegistration(serviceRegistry, autoServiceRegistrationProperties, registration, @@ -111,6 +112,32 @@ public class PolarisAutoServiceRegistrationTest { }).doesNotThrowAnyException(); } + @Test + public void testDeregister() { + doReturn(false).when(registration).isRegisterEnabled(); + assertThatCode(() -> { + polarisAutoServiceRegistration.registerManagement(); + }).doesNotThrowAnyException(); + + doReturn(true).when(registration).isRegisterEnabled(); + assertThatCode(() -> { + polarisAutoServiceRegistration.deregister(); + }).doesNotThrowAnyException(); + } + + @Test + public void testDeregisterManagement() { + doReturn(false).when(registration).isRegisterEnabled(); + assertThatCode(() -> { + polarisAutoServiceRegistration.registerManagement(); + }).doesNotThrowAnyException(); + + doReturn(true).when(registration).isRegisterEnabled(); + assertThatCode(() -> { + polarisAutoServiceRegistration.deregisterManagement(); + }).doesNotThrowAnyException(); + } + @Test public void testGetAppName() { doReturn("application").when(environment).getProperty(anyString(), anyString());