diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceCache.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceCache.java index 25c08d6af6..ddc7a7658f 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceCache.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerResourceCache.java @@ -7,6 +7,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.informers.SharedIndexInformer; +import io.javaoperatorsdk.operator.OperatorException; import io.javaoperatorsdk.operator.api.config.Cloner; import io.javaoperatorsdk.operator.processing.event.ResourceID; import io.javaoperatorsdk.operator.processing.event.source.Cache; @@ -52,6 +53,11 @@ public Optional get(ResourceID resourceID) { sharedIndexInformer = sharedIndexInformers.get(resourceID.getNamespace().orElse(ANY_NAMESPACE_MAP_KEY)); } + if (sharedIndexInformer == null) { + throw new OperatorException( + "Cannot find informer for ResourceID: " + resourceID + ". This is usually " + + "due to invalid resource id mapping for registered informers."); + } var resource = sharedIndexInformer.getStore() .getByKey(io.fabric8.kubernetes.client.informers.cache.Cache.namespaceKeyFunc( resourceID.getNamespace().orElse(null),