You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2018/10/11 13:52:56 UTC

svn commit: r1843551 - in /tomcat/trunk/java/org/apache/catalina/tribes/membership/cloud: CloudMembershipProvider.java KubernetesMembershipProvider.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org