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