From 5ddeb9c9f0087d7f6945255a82a24537ea75de28 Mon Sep 17 00:00:00 2001 From: wind57 Date: Sat, 11 Oct 2025 18:26:31 +0300 Subject: [PATCH 1/6] fix-1641: serialization concerns Signed-off-by: wind57 --- .../DefaultKubernetesServiceInstance.java | 3 +- ...KubernetesExternalNameServiceInstance.java | 3 +- ...rnetesConfigDataLocationResolverTests.java | 3 +- .../ServiceInstanceSerializationTests.java | 102 ++++++++++++++++++ .../k8s/client/discovery/TestAssertions.java | 2 - 5 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java index 1e4af72222..11802504b0 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java @@ -16,6 +16,7 @@ package org.springframework.cloud.kubernetes.commons.discovery; +import java.io.Serializable; import java.net.URI; import java.util.Map; @@ -36,7 +37,7 @@ */ public record DefaultKubernetesServiceInstance(String instanceId, String serviceId, String host, int port, Map metadata, boolean secure, String namespace, String cluster, - Map> podMetadata) implements KubernetesServiceInstance { + Map> podMetadata) implements KubernetesServiceInstance, Serializable { @Override public String getInstanceId() { diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesExternalNameServiceInstance.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesExternalNameServiceInstance.java index 5cf9740dc5..7697844426 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesExternalNameServiceInstance.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesExternalNameServiceInstance.java @@ -16,6 +16,7 @@ package org.springframework.cloud.kubernetes.commons.discovery; +import java.io.Serializable; import java.net.URI; import java.util.Map; @@ -28,7 +29,7 @@ * @author wind57 */ public record KubernetesExternalNameServiceInstance(String serviceId, String host, String instanceId, - Map metadata) implements ServiceInstance { + Map metadata) implements ServiceInstance, Serializable { @Override public String getServiceId() { diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/configdata/KubernetesConfigDataLocationResolverTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/configdata/KubernetesConfigDataLocationResolverTests.java index e5da36412c..ddde540893 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/configdata/KubernetesConfigDataLocationResolverTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/configdata/KubernetesConfigDataLocationResolverTests.java @@ -291,8 +291,7 @@ void testResolveProfileSpecificSix() { Profiles profiles = Mockito.mock(Profiles.class); ConfigDataLocation configDataLocation = ConfigDataLocation.of("kubernetes:abc"); - storePropertiesResolver.resolveProfileSpecific(RESOLVER_CONTEXT, - configDataLocation, profiles); + storePropertiesResolver.resolveProfileSpecific(RESOLVER_CONTEXT, configDataLocation, profiles); // on the other hand, @Default will be picked here Assertions.assertThat(storePropertiesResolver.configMapConfigProperties.enabled()).isTrue(); diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java new file mode 100644 index 0000000000..6aa0c8c750 --- /dev/null +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java @@ -0,0 +1,102 @@ +/* + * Copyright 2019-present the original author or authors. + * + * Licensed 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 + * + * https://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 org.springframework.cloud.kubernetes.commons.discovery; + +import java.util.Map; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; + +import org.springframework.boot.test.json.BasicJsonTester; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author wind57 + */ +class ServiceInstanceSerializationTests { + + private static final BasicJsonTester BASIC_JSON_TESTER = new BasicJsonTester( + ServiceInstanceSerializationTests.class); + + /** + *
+	 *     {
+	 *   	"instanceId": "instanceId",
+	 *   	"serviceId": "serviceId",
+	 *   	"host": "host",
+	 *   	"port": 8080,
+	 *   	"metadata": {
+	 *     	"k8s_namespace": "spring-k8s"
+	 *   	},
+	 *   	"secure": true,
+	 *   	"namespace": "namespace",
+	 *   	"cluster": "cluster",
+	 *   	"podMetadata": {
+	 *     	"pod_root": {
+	 *       	"pod_key": "pod_value"
+	 *     	}
+	 *   	},
+	 *   	"scheme": "https",
+	 *   	"uri": "https://host:8080"
+	 * 		}
+	 * 
+ */ + @Test + void defaultKubernetesServiceInstanceSerializationTest() throws JsonProcessingException { + + DefaultKubernetesServiceInstance instance = new DefaultKubernetesServiceInstance("instanceId", "serviceId", + "host", 8080, Map.of("k8s_namespace", "spring-k8s"), true, "namespace", "cluster", + Map.of("pod_root", Map.of("pod_key", "pod_value"))); + + String serialized = new ObjectMapper().writeValueAsString(instance); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.instanceId") + .isEqualTo("instanceId"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.serviceId") + .isEqualTo("serviceId"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.host").isEqualTo("host"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathNumberValue("$.port").isEqualTo(8080); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathMapValue("$.metadata") + .containsExactlyInAnyOrderEntriesOf(Map.of("k8s_namespace", "spring-k8s")); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathBooleanValue("$.secure").isTrue(); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.namespace") + .isEqualTo("namespace"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.cluster").isEqualTo("cluster"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathMapValue("$.podMetadata") + .containsExactlyInAnyOrderEntriesOf(Map.of("pod_root", Map.of("pod_key", "pod_value"))); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.scheme").isEqualTo("https"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.uri") + .isEqualTo("https://host:8080"); + } + + @Test + void externalNameServiceInstanceSerializationTest() throws JsonProcessingException { + KubernetesExternalNameServiceInstance instance = new KubernetesExternalNameServiceInstance("serviceId", "host", + "instanceId", Map.of("a", "b")); + String serialized = new ObjectMapper().writeValueAsString(instance); + + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.serviceId") + .isEqualTo("serviceId"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.host").isEqualTo("host"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathStringValue("$.instanceId") + .isEqualTo("instanceId"); + assertThat(BASIC_JSON_TESTER.from(serialized)).extractingJsonPathMapValue("$.metadata") + .containsExactlyInAnyOrderEntriesOf(Map.of("a", "b")); + } + +} diff --git a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/TestAssertions.java b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/TestAssertions.java index b4c0172564..4243168612 100644 --- a/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/TestAssertions.java +++ b/spring-cloud-kubernetes-integration-tests/spring-cloud-kubernetes-k8s-client-discovery/src/test/java/org/springframework/cloud/kubernetes/k8s/client/discovery/TestAssertions.java @@ -84,8 +84,6 @@ static void assertBlockingConfiguration(CapturedOutput output, int port) { assertThat(BASIC_JSON_TESTER.from(healthResult)).extractingJsonPathStringValue(BLOCKING_STATUS).isEqualTo("UP"); - assertThat(BASIC_JSON_TESTER.from(healthResult)).extractingJsonPathStringValue(BLOCKING_STATUS).isEqualTo("UP"); - assertThat(BASIC_JSON_TESTER.from(healthResult)).extractingJsonPathArrayValue(BLOCKING_SERVICES) .containsExactlyInAnyOrder("kubernetes", "service-wiremock"); From e5de9db9cf08c242a9cd13d647db0d437300eac1 Mon Sep 17 00:00:00 2001 From: wind57 Date: Sat, 11 Oct 2025 18:30:03 +0300 Subject: [PATCH 2/6] fix-1641: by default, nothing is cacheable Signed-off-by: wind57 --- .../discovery/KubernetesReactiveDiscoveryClient.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java index 2a9a9e8435..2da8a10afe 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java @@ -18,7 +18,6 @@ import reactor.core.publisher.Flux; -import org.springframework.cache.annotation.Cacheable; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient; import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance; @@ -47,7 +46,6 @@ public String description() { } @Override - @Cacheable("serviceinstances") public Flux getInstances(String serviceId) { return webClient.get() .uri("/apps/" + serviceId) @@ -55,7 +53,6 @@ public Flux getInstances(String serviceId) { } @Override - @Cacheable("services") public Flux getServices() { return webClient.get() .uri("/apps") From 2b65fd7e1e72f91dd7294f3847a9db88489d794c Mon Sep 17 00:00:00 2001 From: wind57 Date: Sat, 11 Oct 2025 21:48:13 +0300 Subject: [PATCH 3/6] fix-1641: fix deserialization Signed-off-by: wind57 --- .../DefaultKubernetesServiceInstance.java | 3 ++ .../ServiceInstanceSerializationTests.java | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java index 11802504b0..a0e8cdd8a8 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java @@ -16,6 +16,8 @@ package org.springframework.cloud.kubernetes.commons.discovery; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + import java.io.Serializable; import java.net.URI; import java.util.Map; @@ -35,6 +37,7 @@ * @param namespace the namespace of the service. * @param cluster the cluster the service resides in. */ +@JsonIgnoreProperties(ignoreUnknown = true) public record DefaultKubernetesServiceInstance(String instanceId, String serviceId, String host, int port, Map metadata, boolean secure, String namespace, String cluster, Map> podMetadata) implements KubernetesServiceInstance, Serializable { diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java index 6aa0c8c750..92451d293c 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java @@ -23,6 +23,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.test.json.BasicJsonTester; +import org.springframework.cloud.client.ServiceInstance; import static org.assertj.core.api.Assertions.assertThat; @@ -84,6 +85,44 @@ void defaultKubernetesServiceInstanceSerializationTest() throws JsonProcessingEx .isEqualTo("https://host:8080"); } + @Test + void defaultKubernetesServiceInstanceDeserializationTest() throws JsonProcessingException { + + String serialized = """ + { + "instanceId": "instanceId", + "serviceId": "serviceId", + "host": "host", + "port": 8080, + "metadata": { + "k8s_namespace": "spring-k8s" + }, + "secure": true, + "namespace": "namespace", + "cluster": "cluster", + "podMetadata": { + "pod_root": { + "pod_key": "pod_value" + } + }, + "scheme": "https", + "uri": "https://host:8080" + } + """; + + ServiceInstance deserialized = + new ObjectMapper().readValue(serialized, DefaultKubernetesServiceInstance.class); + assertThat(deserialized.getInstanceId()).isEqualTo("instanceId"); + assertThat(deserialized.getServiceId()).isEqualTo("serviceId"); + assertThat(deserialized.getScheme()).isEqualTo("https"); + assertThat(deserialized.getHost()).isEqualTo("host"); + assertThat(deserialized.getPort()).isEqualTo(8080); + assertThat(deserialized.getUri().toASCIIString()).isEqualTo("https://host:8080"); + assertThat(deserialized.getMetadata()).containsExactlyInAnyOrderEntriesOf( + Map.of("k8s_namespace", "spring-k8s") + ); + } + @Test void externalNameServiceInstanceSerializationTest() throws JsonProcessingException { KubernetesExternalNameServiceInstance instance = new KubernetesExternalNameServiceInstance("serviceId", "host", From 484fb9253db64d95a859db208b516b159b19ffd0 Mon Sep 17 00:00:00 2001 From: wind57 Date: Sat, 11 Oct 2025 21:54:39 +0300 Subject: [PATCH 4/6] fix-1641: fix checkstyle Signed-off-by: wind57 --- .../DefaultKubernetesServiceInstance.java | 4 +- .../ServiceInstanceSerializationTests.java | 50 +++++++++---------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java index a0e8cdd8a8..8c4854a792 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/DefaultKubernetesServiceInstance.java @@ -16,12 +16,12 @@ package org.springframework.cloud.kubernetes.commons.discovery; -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - import java.io.Serializable; import java.net.URI; import java.util.Map; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.HTTP; import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.HTTPS; import static org.springframework.cloud.kubernetes.commons.discovery.KubernetesDiscoveryConstants.NAMESPACE_METADATA_KEY; diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java index 92451d293c..bad7065280 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/ServiceInstanceSerializationTests.java @@ -89,38 +89,36 @@ void defaultKubernetesServiceInstanceSerializationTest() throws JsonProcessingEx void defaultKubernetesServiceInstanceDeserializationTest() throws JsonProcessingException { String serialized = """ - { - "instanceId": "instanceId", - "serviceId": "serviceId", - "host": "host", - "port": 8080, - "metadata": { - "k8s_namespace": "spring-k8s" - }, - "secure": true, - "namespace": "namespace", - "cluster": "cluster", - "podMetadata": { - "pod_root": { - "pod_key": "pod_value" - } - }, - "scheme": "https", - "uri": "https://host:8080" - } - """; - - ServiceInstance deserialized = - new ObjectMapper().readValue(serialized, DefaultKubernetesServiceInstance.class); + { + "instanceId": "instanceId", + "serviceId": "serviceId", + "host": "host", + "port": 8080, + "metadata": { + "k8s_namespace": "spring-k8s" + }, + "secure": true, + "namespace": "namespace", + "cluster": "cluster", + "podMetadata": { + "pod_root": { + "pod_key": "pod_value" + } + }, + "scheme": "https", + "uri": "https://host:8080" + } + """; + + ServiceInstance deserialized = new ObjectMapper().readValue(serialized, DefaultKubernetesServiceInstance.class); assertThat(deserialized.getInstanceId()).isEqualTo("instanceId"); assertThat(deserialized.getServiceId()).isEqualTo("serviceId"); assertThat(deserialized.getScheme()).isEqualTo("https"); assertThat(deserialized.getHost()).isEqualTo("host"); assertThat(deserialized.getPort()).isEqualTo(8080); assertThat(deserialized.getUri().toASCIIString()).isEqualTo("https://host:8080"); - assertThat(deserialized.getMetadata()).containsExactlyInAnyOrderEntriesOf( - Map.of("k8s_namespace", "spring-k8s") - ); + assertThat(deserialized.getMetadata()) + .containsExactlyInAnyOrderEntriesOf(Map.of("k8s_namespace", "spring-k8s")); } @Test From d9714e0151715f264d1f82ad11644b8ead2a6c3e Mon Sep 17 00:00:00 2001 From: wind57 Date: Sun, 12 Oct 2025 09:01:52 +0300 Subject: [PATCH 5/6] revert cacheable Signed-off-by: wind57 --- .../discovery/KubernetesReactiveDiscoveryClient.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java index 2da8a10afe..8a7eeeef44 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java @@ -16,6 +16,7 @@ package org.springframework.cloud.kubernetes.discovery; +import org.springframework.cache.annotation.Cacheable; import reactor.core.publisher.Flux; import org.springframework.cloud.client.ServiceInstance; @@ -46,6 +47,7 @@ public String description() { } @Override + @Cacheable("serviceinstances") public Flux getInstances(String serviceId) { return webClient.get() .uri("/apps/" + serviceId) @@ -53,6 +55,7 @@ public Flux getInstances(String serviceId) { } @Override + @Cacheable("services") public Flux getServices() { return webClient.get() .uri("/apps") From f6bcde75d6e4f59d1468fdb50b2ee4bb1e0946de Mon Sep 17 00:00:00 2001 From: wind57 Date: Sun, 12 Oct 2025 09:03:00 +0300 Subject: [PATCH 6/6] fix checkstyle Signed-off-by: wind57 --- .../kubernetes/discovery/KubernetesReactiveDiscoveryClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java index 8a7eeeef44..2a9a9e8435 100644 --- a/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java +++ b/spring-cloud-kubernetes-discovery/src/main/java/org/springframework/cloud/kubernetes/discovery/KubernetesReactiveDiscoveryClient.java @@ -16,9 +16,9 @@ package org.springframework.cloud.kubernetes.discovery; -import org.springframework.cache.annotation.Cacheable; import reactor.core.publisher.Flux; +import org.springframework.cache.annotation.Cacheable; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.ReactiveDiscoveryClient; import org.springframework.cloud.kubernetes.commons.discovery.DefaultKubernetesServiceInstance;