From 637ebeae5ecc85b33a0baf5d976b0e2a683d83f7 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Tue, 20 Feb 2024 15:28:10 +0200 Subject: [PATCH] Ignore `ValidationSchema` that results in registering all models `ValidationSchema` is annotated with `@JsonDeserialize` which leads in its entire type hierarchy being registered for reflective access along with the corresponding methods. This essentially ends up registering all models as in kubernetes-client 6.9.0 ValidationSchema was augmented to implement `Editable`, which increases the reachable types in comparison to previous versions. Ignoring registrations for `ValidationSchema` aligns with what we already do for `KubeSchema`. Fixes https://github.com/quarkusio/quarkus/issues/38683 --- .../client/deployment/KubernetesClientProcessor.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java index 6c3ddb8b118c3..67411a4d7fe8a 100644 --- a/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java +++ b/extensions/kubernetes-client/deployment/src/main/java/io/quarkus/kubernetes/client/deployment/KubernetesClientProcessor.java @@ -26,6 +26,7 @@ import io.fabric8.kubernetes.api.model.KubeSchema; import io.fabric8.kubernetes.api.model.KubernetesResource; import io.fabric8.kubernetes.api.model.KubernetesResourceList; +import io.fabric8.kubernetes.api.model.ValidationSchema; import io.fabric8.kubernetes.client.Config; import io.fabric8.kubernetes.client.CustomResource; import io.fabric8.kubernetes.client.DefaultKubernetesClient; @@ -67,6 +68,7 @@ public class KubernetesClientProcessor { private static final DotName RESOURCE_EVENT_HANDLER = DotName .createSimple(io.fabric8.kubernetes.client.informers.ResourceEventHandler.class.getName()); private static final DotName KUBERNETES_RESOURCE = DotName.createSimple(KubernetesResource.class.getName()); + private static final DotName VALIDATION_SCHEMA = DotName.createSimple(ValidationSchema.class.getName()); private static final DotName KUBERNETES_RESOURCE_LIST = DotName .createSimple(KubernetesResourceList.class.getName()); private static final DotName KUBE_SCHEMA = DotName.createSimple(KubeSchema.class.getName()); @@ -189,6 +191,7 @@ public void process(ApplicationIndexBuildItem applicationIndex, CombinedIndexBui ignoredJsonDeserializationClasses.produce(new IgnoreJsonDeserializeClassBuildItem(KUBE_SCHEMA)); ignoredJsonDeserializationClasses.produce(new IgnoreJsonDeserializeClassBuildItem(KUBERNETES_RESOURCE_LIST)); ignoredJsonDeserializationClasses.produce(new IgnoreJsonDeserializeClassBuildItem(KUBERNETES_RESOURCE)); + ignoredJsonDeserializationClasses.produce(new IgnoreJsonDeserializeClassBuildItem(VALIDATION_SCHEMA)); final String[] deserializerClasses = fullIndex .getAllKnownSubclasses(DotName.createSimple("com.fasterxml.jackson.databind.JsonDeserializer"))