You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by on...@apache.org on 2020/02/02 03:57:45 UTC

[geode] branch develop updated: GEODE-7755: change Pulse to not keep locator alive (#4661)

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

onichols 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 44f4c21  GEODE-7755: change Pulse to not keep locator alive (#4661)
44f4c21 is described below

commit 44f4c2198c8ec0d7b717c3c940522288b65ab75e
Author: Darrel Schneider <ds...@pivotal.io>
AuthorDate: Sat Feb 1 19:57:23 2020 -0800

    GEODE-7755: change Pulse to not keep locator alive (#4661)
    
    * Cluster now makes itself a daemon if embedded.
    If the JMXDataUpdater loses its connection it now tells the Cluster it is no longer connected.
    
    * removed debug logging
---
 .../java/org/apache/geode/tools/pulse/PulseConnectivityTest.java   | 6 ++++++
 .../java/org/apache/geode/tools/pulse/internal/data/Cluster.java   | 7 +++++--
 .../org/apache/geode/tools/pulse/internal/data/JMXDataUpdater.java | 2 ++
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/geode-assembly/src/integrationTest/java/org/apache/geode/tools/pulse/PulseConnectivityTest.java b/geode-assembly/src/integrationTest/java/org/apache/geode/tools/pulse/PulseConnectivityTest.java
index 63b5737..fe40776 100644
--- a/geode-assembly/src/integrationTest/java/org/apache/geode/tools/pulse/PulseConnectivityTest.java
+++ b/geode-assembly/src/integrationTest/java/org/apache/geode/tools/pulse/PulseConnectivityTest.java
@@ -16,6 +16,7 @@
 package org.apache.geode.tools.pulse;
 
 import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_BIND_ADDRESS;
+import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.net.InetAddress;
@@ -94,5 +95,10 @@ public class PulseConnectivityTest {
     Cluster cluster = pulse.getRepository().getCluster("admin", null);
     assertThat(cluster.isConnectedFlag()).isTrue();
     assertThat(cluster.getServerCount()).isEqualTo(0);
+    assertThat(cluster.isAlive()).isTrue();
+    assertThat(cluster.isDaemon()).isTrue();
+    locator.getLocator().stop();
+    assertThat(locator.getLocator().isStopped()).isTrue();
+    await().untilAsserted(() -> assertThat(cluster.isAlive()).isFalse());
   }
 }
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
index d06af15..1eaa7a5 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/data/Cluster.java
@@ -93,7 +93,7 @@ public class Cluster extends Thread {
   private long garbageCollectionCount = 0L;
   private int clusterId;
   private int notificationPageNumber = 1;
-  private boolean connectedFlag;
+  private volatile boolean connectedFlag;
   private String connectionErrorMsg = "";
 
   private Set<String> deletedMembers = new HashSet<String>();
@@ -2253,6 +2253,9 @@ public class Cluster extends Thread {
 
     this.updater = new JMXDataUpdater(serverName, port, this);
     this.clusterHasBeenInitialized = new CountDownLatch(1);
+    if (Boolean.getBoolean(PulseConstants.SYSTEM_PROPERTY_PULSE_EMBEDDED)) {
+      this.setDaemon(true);
+    }
   }
 
   public void waitForInitialization(long timeout, TimeUnit unit) throws InterruptedException {
@@ -2265,7 +2268,7 @@ public class Cluster extends Thread {
   @Override
   public void run() {
     try {
-      while (!this.stopUpdates) {
+      while (!this.stopUpdates && isConnectedFlag()) {
         try {
           if (!this.updateData()) {
             this.stale++;
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 4b91678..b42d376 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
@@ -373,6 +373,8 @@ public class JMXDataUpdater implements IClusterUpdater, NotificationListener {
           logger.fatal(e1.getMessage(), e1);
         }
         this.conn = null;
+        cluster.setConnectedFlag(false);
+        cluster.setConnectionErrorMsg(ioe.getMessage());
       }
 
       return false;