Skip to content

Commit 5b8af3d

Browse files
committed
fix: improve robustness (in particular if no informer exist for NS)
1 parent 23bede1 commit 5b8af3d

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/ResourceCache.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,21 @@
77
import io.fabric8.kubernetes.api.model.HasMetadata;
88
import io.javaoperatorsdk.operator.processing.event.ResourceID;
99

10+
@SuppressWarnings({"rawtypes", "unchecked"})
1011
public interface ResourceCache<T extends HasMetadata> {
12+
Predicate TRUE = (a) -> true;
1113

1214
Optional<T> get(ResourceID resourceID);
1315

1416
default Stream<T> list() {
15-
return list(a -> true);
17+
return list(TRUE);
1618
}
1719

1820
Stream<T> list(Predicate<T> predicate);
1921

20-
Stream<T> list(String namespace);
22+
default Stream<T> list(String namespace) {
23+
return list(namespace, TRUE);
24+
}
2125

2226
Stream<T> list(String namespace, Predicate<T> predicate);
2327
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/ControllerResourceEventSource.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
import java.util.function.Predicate;
99
import java.util.stream.Stream;
1010

11-
import org.slf4j.Logger;
12-
import org.slf4j.LoggerFactory;
13-
1411
import io.fabric8.kubernetes.api.model.HasMetadata;
1512
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
1613
import io.fabric8.kubernetes.client.KubernetesClientException;
@@ -26,6 +23,9 @@
2623
import io.javaoperatorsdk.operator.processing.ResourceCache;
2724
import io.javaoperatorsdk.operator.processing.event.ResourceID;
2825

26+
import org.slf4j.Logger;
27+
import org.slf4j.LoggerFactory;
28+
2929
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getName;
3030
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getUID;
3131
import static io.javaoperatorsdk.operator.processing.KubernetesResourceUtils.getVersion;
@@ -188,23 +188,19 @@ public Stream<T> list(Predicate<T> predicate) {
188188

189189
@Override
190190
public Stream<T> list(String namespace) {
191-
if (isWatchingAllNamespaces()) {
192-
return sharedIndexInformers.get(ANY_NAMESPACE_MAP_KEY).getStore().list().stream()
193-
.filter(r -> r.getMetadata()
194-
.getNamespace().equals(namespace));
195-
} else {
196-
return sharedIndexInformers.get(namespace).getStore().list().stream();
197-
}
191+
return list(namespace, null);
198192
}
199193

200194
@Override
201195
public Stream<T> list(String namespace, Predicate<T> predicate) {
202196
if (isWatchingAllNamespaces()) {
203-
return sharedIndexInformers.get(ANY_NAMESPACE_MAP_KEY).getStore().list().stream()
204-
.filter(r -> r.getMetadata()
205-
.getNamespace().equals(namespace) && predicate.test(r));
197+
final var stream = sharedIndexInformers.get(ANY_NAMESPACE_MAP_KEY).getStore().list().stream()
198+
.filter(r -> r.getMetadata().getNamespace().equals(namespace));
199+
return predicate != null ? stream.filter(predicate) : stream;
206200
} else {
207-
return sharedIndexInformers.get(namespace).getStore().list().stream().filter(predicate);
201+
final var informer = sharedIndexInformers.get(namespace);
202+
return informer != null ? informer.getStore().list().stream().filter(predicate)
203+
: Stream.empty();
208204
}
209205
}
210206

0 commit comments

Comments
 (0)