diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java index 0a420c52a9..229d5e5223 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/ReconcilerUtils.java @@ -133,7 +133,7 @@ public static void handleKubernetesClientException(Exception e, String resourceT // only throw MissingCRDException if the 404 error occurs on the target CRD if (resourceTypeName.equals(ke.getFullResourceName()) || matchesResourceType(resourceTypeName, ke)) { - throw new MissingCRDException(resourceTypeName, null, e.getMessage(), e); + throw new MissingCRDException(resourceTypeName, ke.getVersion(), e.getMessage(), e); } } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java index 92b70e722d..9bccb4e3c3 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java @@ -299,7 +299,7 @@ public synchronized void start(boolean startEventProcessor) throws OperatorExcep log.info("'{}' controller started, pending event sources initialization", controllerName); } catch (MissingCRDException e) { stop(); - throwMissingCRDException(crdName, specVersion, controllerName); + throwMissingCRDException(e.getCrdName(), e.getSpecVersion(), controllerName); } } diff --git a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerWrapper.java b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerWrapper.java index 24930b6c0c..ba3b5c5ba2 100644 --- a/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerWrapper.java +++ b/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerWrapper.java @@ -7,6 +7,9 @@ import java.util.function.Predicate; import java.util.stream.Stream; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.client.informers.ResourceEventHandler; import io.fabric8.kubernetes.client.informers.SharedIndexInformer; @@ -20,6 +23,8 @@ class InformerWrapper implements LifecycleAware, IndexerResourceCache { + private static final Logger log = LoggerFactory.getLogger(InformerWrapper.class); + private final SharedIndexInformer informer; private final Cache cache; @@ -33,8 +38,12 @@ public void start() throws OperatorException { try { informer.run(); } catch (Exception e) { - ReconcilerUtils.handleKubernetesClientException(e, - HasMetadata.getFullResourceName(informer.getApiTypeClass())); + final var apiTypeClass = informer.getApiTypeClass(); + final var fullResourceName = HasMetadata.getFullResourceName(apiTypeClass); + final var version = HasMetadata.getVersion(apiTypeClass); + log.error("Couldn't start informer for " + fullResourceName + "/" + version + " resources", + e); + ReconcilerUtils.handleKubernetesClientException(e, fullResourceName); throw e; } }