Skip to content

Commit a9b4e1c

Browse files
authored
Merge pull request #2124 from wind57/minor-improvement-to-compute-service-metadata-only-once
compute kubernetes service metadata only once
2 parents 6228120 + 9b90888 commit a9b4e1c

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,21 +180,22 @@ private List<ServiceInstance> serviceInstances(V1Service service, String service
180180
.filter(Objects::nonNull)
181181
.toList();
182182

183+
ServiceMetadata k8sServiceMetadata = serviceMetadata(service);
184+
183185
for (V1Endpoints endpoints : allEndpoints) {
184186
List<V1EndpointSubset> subsets = endpoints.getSubsets();
185187
if (subsets == null || subsets.isEmpty()) {
186188
LOG.debug(() -> "serviceId : " + serviceId + " does not have any subsets");
187189
}
188190
else {
189-
ServiceMetadata serviceMetadata = serviceMetadata(service);
190191
Map<String, Integer> portsData = endpointSubsetsPortData(subsets);
191-
Map<String, String> serviceInstanceMetadata = serviceInstanceMetadata(portsData, serviceMetadata,
192+
Map<String, String> serviceInstanceMetadata = serviceInstanceMetadata(portsData, k8sServiceMetadata,
192193
properties);
193194

194195
for (V1EndpointSubset endpointSubset : subsets) {
195196

196197
Map<String, Integer> endpointsPortData = endpointSubsetsPortData(List.of(endpointSubset));
197-
ServicePortNameAndNumber portData = endpointsPort(endpointsPortData, serviceMetadata, properties);
198+
ServicePortNameAndNumber portData = endpointsPort(endpointsPortData, k8sServiceMetadata, properties);
198199

199200
List<V1EndpointAddress> addresses = addresses(endpointSubset, properties);
200201
for (V1EndpointAddress endpointAddress : addresses) {
@@ -204,7 +205,7 @@ private List<ServiceInstance> serviceInstances(V1Service service, String service
204205
KubernetesClientPodLabelsAndAnnotationsSupplier supplierTwo = nonExternalName(coreV1Api,
205206
service.getMetadata().getNamespace());
206207

207-
ServiceInstance serviceInstance = serviceInstance(servicePortSecureResolver, serviceMetadata,
208+
ServiceInstance serviceInstance = serviceInstance(servicePortSecureResolver, k8sServiceMetadata,
208209
supplierOne, supplierTwo, portData, serviceInstanceMetadata, properties);
209210
instances.add(serviceInstance);
210211
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@ void instanceWithoutSubsetsShouldBeSkipped() {
247247
.build();
248248
endpointsCache.add(endpoints);
249249

250-
V1Service service = new V1ServiceBuilder().withNewMetadata()
250+
V1Service service = new V1ServiceBuilder()
251+
.withSpec(new V1ServiceSpecBuilder().withType("ClusterIP").build())
252+
.withNewMetadata()
251253
.withName("endpoint1")
252254
.withNamespace("test")
253255
.and()

0 commit comments

Comments
 (0)