From 789e9f390bce0f8995afb60c5e3bcfc3718778ed Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Tue, 18 Oct 2022 13:13:04 -0400 Subject: [PATCH] fix #4496: removing list handling from watching --- CHANGELOG.md | 1 + .../dsl/internal/AbstractWatchManager.java | 44 +------------------ 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c863ee3571d..bff8a62f7f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ * Fix #4478: Removing the resourceVersion bump with null status * Fix #4482: Fixing blocking behavior of okhttp log watch * Fix #4487: Schema for multimaps is now generated correctly +* Fix #4496: Removing watch handling of lists #### Improvements * Fix #4471: Adding KubernetesClientBuilder.withHttpClientBuilderConsumer to further customize the HttpClient for any implementation. diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/AbstractWatchManager.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/AbstractWatchManager.java index 0500300f42b..c923872640f 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/AbstractWatchManager.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/AbstractWatchManager.java @@ -20,7 +20,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.KubernetesResource; -import io.fabric8.kubernetes.api.model.KubernetesResourceList; import io.fabric8.kubernetes.api.model.ListOptions; import io.fabric8.kubernetes.api.model.Status; import io.fabric8.kubernetes.api.model.WatchEvent; @@ -39,7 +38,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -250,33 +248,9 @@ private WatchEvent contextAwareWatchEventDeserializer(String messageSource) } } - protected WatchEvent readWatchEvent(String messageSource) throws JsonProcessingException { - WatchEvent event = contextAwareWatchEventDeserializer(messageSource); - KubernetesResource object = null; - if (event != null) { - object = event.getObject(); - } - // when watching API Groups we don't get a WatchEvent resource - // so the object will be null - // so lets try parse the message as a KubernetesResource - // as it will probably be a list of resources like a BuildList - if (object == null) { - object = Serialization.unmarshal(messageSource, KubernetesResource.class); - if (event == null) { - event = new WatchEvent(object, "MODIFIED"); - } else { - event.setObject(object); - } - } - if (event.getType() == null) { - event.setType("MODIFIED"); - } - return event; - } - protected void onMessage(String message) { try { - WatchEvent event = readWatchEvent(message); + WatchEvent event = contextAwareWatchEventDeserializer(message); Object object = event.getObject(); Action action = Action.valueOf(event.getType()); if (action == Action.ERROR) { @@ -291,21 +265,7 @@ protected void onMessage(String message) { } else if (object instanceof HasMetadata) { HasMetadata hasMetadata = (HasMetadata) object; updateResourceVersion(hasMetadata.getMetadata().getResourceVersion()); - - if (object instanceof KubernetesResourceList) { - // Dirty cast - should always be valid though - @SuppressWarnings({ "rawtypes" }) - KubernetesResourceList list = (KubernetesResourceList) hasMetadata; - @SuppressWarnings("unchecked") - List items = list.getItems(); - if (items != null) { - for (HasMetadata item : items) { - eventReceived(action, item); - } - } - } else { - eventReceived(action, hasMetadata); - } + eventReceived(action, hasMetadata); } else { final String msg = String.format("Invalid object received: %s", message); close(new WatcherException(msg, null, message));