Skip to content

Commit 1ef24dd

Browse files
authored
Merge pull request #4676 from kubernetes-client/dependabot/maven/com.github.ben-manes.caffeine-caffeine-3.0.0
build(deps): bump com.github.ben-manes.caffeine:caffeine from 2.9.3 to 3.0.0
2 parents 84bc384 + 66dd19c commit 1ef24dd

2 files changed

Lines changed: 11 additions & 35 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
<jakarta.ws.rs-api-version>3.1.0</jakarta.ws.rs-api-version>
5050
<snakeyaml.version>2.6</snakeyaml.version>
5151
<slf4j.version>2.0.17</slf4j.version>
52-
<caffeine.version>2.9.3</caffeine.version>
52+
<caffeine.version>3.0.0</caffeine.version>
5353
<protobuf.version>4.34.1</protobuf.version>
5454
<junit-jupiter.version>5.13.4</junit-jupiter.version>
5555
<junit-jupiter.version>5.13.4</junit-jupiter.version>

spring/src/main/java/io/kubernetes/client/spring/extended/manifests/KubernetesFromConfigMapProcessor.java

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,18 @@
1212
*/
1313
package io.kubernetes.client.spring.extended.manifests;
1414

15-
import com.github.benmanes.caffeine.cache.CacheLoader;
15+
import com.github.benmanes.caffeine.cache.Cache;
1616
import com.github.benmanes.caffeine.cache.Caffeine;
17-
import com.github.benmanes.caffeine.cache.LoadingCache;
1817
import io.kubernetes.client.openapi.models.V1ConfigMap;
1918
import io.kubernetes.client.spring.extended.manifests.annotation.FromConfigMap;
2019
import io.kubernetes.client.spring.extended.manifests.config.KubernetesManifestsProperties;
2120
import io.kubernetes.client.spring.extended.manifests.configmaps.ConfigMapGetter;
2221
import java.lang.reflect.Field;
2322
import java.util.Map;
23+
import java.util.Set;
2424
import java.util.concurrent.Executors;
2525
import java.util.concurrent.ScheduledExecutorService;
2626
import java.util.concurrent.TimeUnit;
27-
import java.util.function.Supplier;
28-
import org.checkerframework.checker.nullness.qual.NonNull;
29-
import org.checkerframework.checker.nullness.qual.Nullable;
3027
import org.slf4j.Logger;
3128
import org.slf4j.LoggerFactory;
3229
import org.springframework.beans.BeansException;
@@ -80,15 +77,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
8077
ConfigMapGetter configMapGetter =
8178
getOrCreateConfigMapGetter(fromConfigMapAnnotation, applicationContext);
8279

83-
LoadingCache<String, String> configMapDataCache =
84-
Caffeine.newBuilder()
85-
.expireAfterWrite(manifestsProperties.getRefreshInterval())
86-
.build(
87-
new ConfigMapGetterCacheLoader(
88-
() -> {
89-
return configMapGetter.get(
90-
fromConfigMapAnnotation.namespace(), fromConfigMapAnnotation.name());
91-
}));
80+
Cache<String, String> configMapDataCache = Caffeine.newBuilder().build();
9281
fullyRefreshCache(configMapGetter, fromConfigMapAnnotation, configMapDataCache);
9382
configMapKeyRefresher.scheduleAtFixedRate(
9483
() -> {
@@ -106,14 +95,19 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
10695
private static void fullyRefreshCache(
10796
ConfigMapGetter configMapGetter,
10897
FromConfigMap fromConfigMapAnnotation,
109-
LoadingCache<String, String> configMapDataCache) {
98+
Cache<String, String> configMapDataCache) {
11099
V1ConfigMap configMap =
111100
configMapGetter.get(fromConfigMapAnnotation.namespace(), fromConfigMapAnnotation.name());
112101
if (configMap == null || configMap.getData() == null) {
102+
configMapDataCache.invalidateAll();
113103
return;
114104
}
115105
// TODO: make the cache data refreshment atomic
116-
configMap.getData().keySet().stream().forEach(key -> configMapDataCache.refresh(key));
106+
Map<String, String> newData = configMap.getData();
107+
newData.forEach(configMapDataCache::put);
108+
Set.copyOf(configMapDataCache.asMap().keySet()).stream()
109+
.filter(key -> !newData.containsKey(key))
110+
.forEach(configMapDataCache::invalidate);
117111
}
118112

119113
private ConfigMapGetter getOrCreateConfigMapGetter(
@@ -144,22 +138,4 @@ private ConfigMapGetter getOrCreateConfigMapGetter(
144138
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
145139
this.applicationContext = applicationContext;
146140
}
147-
148-
static class ConfigMapGetterCacheLoader implements CacheLoader<String, String> {
149-
150-
ConfigMapGetterCacheLoader(Supplier<V1ConfigMap> configMapSupplier) {
151-
this.configMapSupplier = configMapSupplier;
152-
}
153-
154-
private final Supplier<V1ConfigMap> configMapSupplier;
155-
156-
@Override
157-
public @Nullable String load(@NonNull String key) throws Exception {
158-
V1ConfigMap configMap = this.configMapSupplier.get();
159-
if (configMap == null || configMap.getData() == null) {
160-
return null;
161-
}
162-
return configMap.getData().get(key);
163-
}
164-
}
165141
}

0 commit comments

Comments
 (0)