You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2018/04/03 04:00:20 UTC

[geode] branch develop updated: GEODE-3456: Fix display of 'null' hosts in Pulse UI (#1717)

This is an automated email from the ASF dual-hosted git repository.

jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/develop by this push:
     new 5b21633  GEODE-3456: Fix display of 'null' hosts in Pulse UI (#1717)
5b21633 is described below

commit 5b21633d9b36eb9c9a58b787275fb0fd856db702
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Mon Apr 2 21:00:15 2018 -0700

    GEODE-3456: Fix display of 'null' hosts in Pulse UI (#1717)
---
 .../tools/pulse/internal/data/JMXDataUpdater.java  | 65 +++++++++++++---------
 1 file changed, 39 insertions(+), 26 deletions(-)

diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
index a6df106..1dac541 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java
@@ -20,7 +20,6 @@ package org.apache.geode.tools.pulse.internal.data;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.lang.reflect.Array;
 import java.math.BigDecimal;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
@@ -300,34 +299,48 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
         cluster.removeClusterRegion(it.next());
       }
 
-      // Cluster Members
+      List<ObjectName> serviceMBeans = new ArrayList<>();
+      List<ObjectName> nonServiceMBeans = new ArrayList<>();
+
       Set<ObjectName> memberMBeans = this.mbs.queryNames(this.MBEAN_OBJECT_NAME_MEMBER, null);
-      for (ObjectName memMBean : memberMBeans) {
-        String service = memMBean.getKeyProperty(PulseConstants.MBEAN_KEY_PROPERTY_SERVICE);
+      for (ObjectName mBean : memberMBeans) {
+        String service = mBean.getKeyProperty(PulseConstants.MBEAN_KEY_PROPERTY_SERVICE);
         if (service == null) {
-          // Cluster Member
-          updateClusterMember(memMBean);
+          nonServiceMBeans.add(mBean);
         } else {
-          switch (service) {
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_REGION:
-              updateMemberRegion(memMBean);
-              break;
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_CACHESERVER:
-              updateMemberClient(memMBean);
-              break;
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_GATEWAYRECEIVER:
-              updateGatewayReceiver(memMBean);
-              break;
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_GATEWAYSENDER:
-              updateGatewaySender(memMBean);
-              break;
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_ASYNCEVENTQUEUE:
-              updateAsyncEventQueue(memMBean);
-              break;
-            case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_LOCATOR:
-              updateClusterMember(memMBean);
-              break;
-          }
+          serviceMBeans.add(mBean);
+        }
+      }
+
+      // Make sure that we process 'pure' members first. This ensures that various structures in
+      // Cluster are set up correctly since they are keyed on the 'host' attribute which does not
+      // necessarily appear in other MBeans. This avoids the possibility of having a 'null' host
+      // icon appear in the Pulse UI.
+      for (ObjectName mBean : nonServiceMBeans) {
+        updateClusterMember(mBean);
+      }
+
+      for (ObjectName serviceMBean : serviceMBeans) {
+        String service = serviceMBean.getKeyProperty(PulseConstants.MBEAN_KEY_PROPERTY_SERVICE);
+        switch (service) {
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_REGION:
+            updateMemberRegion(serviceMBean);
+            break;
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_CACHESERVER:
+            updateMemberClient(serviceMBean);
+            break;
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_GATEWAYRECEIVER:
+            updateGatewayReceiver(serviceMBean);
+            break;
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_GATEWAYSENDER:
+            updateGatewaySender(serviceMBean);
+            break;
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_ASYNCEVENTQUEUE:
+            updateAsyncEventQueue(serviceMBean);
+            break;
+          case PulseConstants.MBEAN_KEY_PROPERTY_SERVICE_VALUE_LOCATOR:
+            updateClusterMember(serviceMBean);
+            break;
         }
       }
 

-- 
To stop receiving notification emails like this one, please contact
jensdeppe@apache.org.