Skip to content

Commit 6cc2646

Browse files
authored
Merge pull request #2122 from wind57/stop-informers-and-some-cleaup
close shared informers + minor cleanup in tests
2 parents 9dc8caf + daddefc commit 6cc2646

4 files changed

Lines changed: 98 additions & 110 deletions

File tree

spring-cloud-kubernetes-client-discovery/src/main/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientBlockingAbstractInformerDiscoveryClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import io.kubernetes.client.openapi.models.V1Endpoints;
3434
import io.kubernetes.client.openapi.models.V1Service;
3535
import jakarta.annotation.PostConstruct;
36+
import jakarta.annotation.PreDestroy;
3637
import org.apache.commons.logging.LogFactory;
3738

3839
import org.springframework.cloud.client.ServiceInstance;
@@ -167,6 +168,11 @@ void afterPropertiesSet() {
167168
postConstruct(sharedInformerFactories, properties, informersReadyFunc, serviceListers);
168169
}
169170

171+
@PreDestroy
172+
void preDestroy() {
173+
sharedInformerFactories.forEach(SharedInformerFactory::stopAllRegisteredInformers);
174+
}
175+
170176
private List<ServiceInstance> serviceInstances(V1Service service, String serviceId) {
171177

172178
List<ServiceInstance> instances = new ArrayList<>();

spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesClientCatalogWatchAutoConfigurationApplicationContextTests.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -40,37 +40,33 @@ class KubernetesClientCatalogWatchAutoConfigurationApplicationContextTests {
4040

4141
@Test
4242
void discoveryEnabledDefault() {
43-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false");
43+
setup("spring.main.cloud-platform=KUBERNETES");
4444
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesClientCatalogWatch.class));
4545
}
4646

4747
@Test
4848
void discoveryEnabled() {
49-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
50-
"spring.cloud.discovery.enabled=true");
49+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.discovery.enabled=true");
5150
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesClientCatalogWatch.class));
5251
}
5352

5453
@Test
5554
void discoveryDisabled() {
56-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
57-
"spring.cloud.discovery.enabled=false");
55+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.discovery.enabled=false");
5856
applicationContextRunner
5957
.run(context -> assertThat(context).doesNotHaveBean(KubernetesClientCatalogWatch.class));
6058
}
6159

6260
@Test
6361
void kubernetesDiscoveryEnabled() {
64-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
65-
"spring.cloud.kubernetes.discovery.enabled=true");
62+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.kubernetes.discovery.enabled=true");
6663
applicationContextRunner.run(context -> assertThat(context).hasSingleBean(KubernetesClientCatalogWatch.class));
6764
}
6865

6966
// disabling discovery, disables catalog watcher.
7067
@Test
7168
void kubernetesDiscoveryDisabled() {
72-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
73-
"spring.cloud.kubernetes.discovery.enabled=false");
69+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.kubernetes.discovery.enabled=false");
7470
applicationContextRunner
7571
.run(context -> assertThat(context).doesNotHaveBean(KubernetesClientCatalogWatch.class));
7672
}
@@ -80,8 +76,8 @@ void kubernetesDiscoveryDisabled() {
8076
*/
8177
@Test
8278
void disableBlockingAndReactive() {
83-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
84-
"spring.cloud.discovery.blocking.enabled=false", "spring.cloud.discovery.reactive.enabled=false");
79+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.discovery.blocking.enabled=false",
80+
"spring.cloud.discovery.reactive.enabled=false");
8581
applicationContextRunner.run(context -> {
8682
assertThat(context).doesNotHaveBean(KubernetesClientCatalogWatch.class);
8783
assertThat(context).doesNotHaveBean(KubernetesClientInformerReactiveDiscoveryClient.class);
@@ -97,8 +93,8 @@ void disableBlockingAndReactive() {
9793
*/
9894
@Test
9995
void disableBlockingEnableReactive() {
100-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
101-
"spring.cloud.discovery.blocking.enabled=false", "spring.cloud.discovery.reactive.enabled=true");
96+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.discovery.blocking.enabled=false",
97+
"spring.cloud.discovery.reactive.enabled=true");
10298
applicationContextRunner.run(context -> {
10399
assertThat(context).hasSingleBean(KubernetesClientCatalogWatch.class);
104100
});
@@ -109,8 +105,8 @@ void disableBlockingEnableReactive() {
109105
*/
110106
@Test
111107
void enableBlockingDisableReactive() {
112-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
113-
"spring.cloud.discovery.blocking.enabled=true", "spring.cloud.discovery.reactive.enabled=false");
108+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.discovery.blocking.enabled=true",
109+
"spring.cloud.discovery.reactive.enabled=false");
114110
applicationContextRunner.run(context -> {
115111
assertThat(context).hasSingleBean(KubernetesClientCatalogWatch.class);
116112
});
@@ -122,8 +118,7 @@ void enableBlockingDisableReactive() {
122118
*/
123119
@Test
124120
void disableKubernetesDiscovery() {
125-
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.config.enabled=false",
126-
"spring.cloud.kubernetes.discovery.enabled=false");
121+
setup("spring.main.cloud-platform=KUBERNETES", "spring.cloud.kubernetes.discovery.enabled=false");
127122
applicationContextRunner.run(context -> {
128123
assertThat(context).doesNotHaveBean(KubernetesClientCatalogWatch.class);
129124
assertThat(context).doesNotHaveBean(KubernetesClientInformerReactiveDiscoveryClient.class);

0 commit comments

Comments
 (0)