Author: remm Date: Thu Oct 11 13:52:56 2018 New Revision: 1843551 URL: http://svn.apache.org/viewvc?rev=1843551&view=rev Log: Add "kind" checks and improve logging.
Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java?rev=1843551&r1=1843550&r2=1843551&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java Thu Oct 11 13:52:56 2018 @@ -104,11 +104,13 @@ public abstract class CloudMembershipPro @Override public void heartbeat() { - log.debug("Fetching announced members"); Member[] announcedMembers = fetchMembers(); // Add new members or refresh the members in the membership for (Member member : announcedMembers) { if (membership.memberAlive(member)) { + if (log.isDebugEnabled()) { + log.debug("Member added: " + member); + } membershipListener.memberAdded(member); } } @@ -116,7 +118,7 @@ public abstract class CloudMembershipPro Member[] expired = membership.expire(100); // TODO: is 100ms a good value? for (Member member : expired) { if (log.isDebugEnabled()) { - log.debug("Member is dead: " + member); + log.debug("Member disappeared: " + member); } membershipListener.memberDisappeared(member); } Modified: tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java?rev=1843551&r1=1843550&r2=1843551&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java Thu Oct 11 13:52:56 2018 @@ -141,30 +141,40 @@ public class KubernetesMembershipProvide return members.toArray(new Member[0]); } + @SuppressWarnings("unchecked") protected void parsePods(Reader reader, List<MemberImpl> members) { JSONParser parser = new JSONParser(reader); try { LinkedHashMap<String, Object> json = parser.object(); + // If there is a "kind", check it is "PodList" + Object kindObject = json.get("kind"); + if (kindObject != null && !"PodList".equals(kindObject)) { + log.error(sm.getString("kubernetesMembershipProvider.invalidPodsList", "not podList")); + return; + } Object itemsObject = json.get("items"); if (!(itemsObject instanceof List<?>)) { log.error(sm.getString("kubernetesMembershipProvider.invalidPodsList", "no items")); return; } - @SuppressWarnings("unchecked") List<Object> items = (List<Object>) itemsObject; for (Object podObject : items) { if (!(podObject instanceof LinkedHashMap<?, ?>)) { log.warn(sm.getString("kubernetesMembershipProvider.invalidPod")); continue; } - @SuppressWarnings("unchecked") LinkedHashMap<String, Object> pod = (LinkedHashMap<String, Object>) podObject; + // If there is a "kind", check it is "Pod" + Object podKindObject = pod.get("kind"); + if (podKindObject != null && !"Pod".equals(podKindObject)) { + continue; + } + // "metadata" contains "name", "uid" and "creationTimestamp" Object metadataObject = pod.get("metadata"); if (!(metadataObject instanceof LinkedHashMap<?, ?>)) { log.warn(sm.getString("kubernetesMembershipProvider.invalidPod")); continue; } - @SuppressWarnings("unchecked") LinkedHashMap<String, Object> metadata = (LinkedHashMap<String, Object>) metadataObject; Object nameObject = metadata.get("name"); if (nameObject == null) { @@ -180,12 +190,12 @@ public class KubernetesMembershipProvide continue; } String creationTimestamp = creationTimestampObject.toString(); + // "status" contains "phase" (which must be "Running") and "podIP" Object statusObject = pod.get("status"); if (!(statusObject instanceof LinkedHashMap<?, ?>)) { log.warn(sm.getString("kubernetesMembershipProvider.invalidPod")); continue; } - @SuppressWarnings("unchecked") LinkedHashMap<String, Object> status = (LinkedHashMap<String, Object>) statusObject; if (!"Running".equals(status.get("phase"))) { continue; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org