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

zhouxj pushed a commit to branch feature/GEODE-9522
in repository https://gitbox.apache.org/repos/asf/geode.git

commit e75dc7d47bea27c01bb021edfe768678f7d0e256
Author: zhouxh <[email protected]>
AuthorDate: Wed Sep 1 08:40:00 2021 -0700

    GEODE-9522: When a server is force disconnected, it should set shutdown 
cause for dm to prevent clients recreating server connection.
    
        Co-authored-by: Barry Oglesby <[email protected]>
        Co-authored-by: Anil <[email protected]>
---
 .../geode/distributed/internal/ClusterDistributionManager.java       | 5 +++++
 .../distributed/internal/membership/api/MembershipListener.java      | 1 +
 .../geode/distributed/internal/membership/gms/GMSMembership.java     | 2 ++
 3 files changed, 8 insertions(+)

diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
index 9e47a40..2cae200 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
@@ -2412,6 +2412,11 @@ public class ClusterDistributionManager implements 
DistributionManager {
         dm.getCache().saveCacheXmlForReconnect();
       }
     }
+
+    @Override
+    public void setShutdownCause(Exception shutdownCause) {
+      dm.setRootCause(shutdownCause);
+    }
   }
 
 
diff --git 
a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipListener.java
 
b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipListener.java
index 5f3f7c3..948b986 100755
--- 
a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipListener.java
+++ 
b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/api/MembershipListener.java
@@ -71,4 +71,5 @@ public interface MembershipListener<ID extends 
MemberIdentifier> {
    */
   void saveConfig();
 
+  default void setShutdownCause(Exception shutdownCause) {};
 }
diff --git 
a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
 
b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
index ff9a383..32915e0 100644
--- 
a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
+++ 
b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMembership.java
@@ -1790,6 +1790,8 @@ public class GMSMembership<ID extends MemberIdentifier> 
implements Membership<ID
       services.setShutdownCause(shutdownCause);
       services.getCancelCriterion().cancel(reason);
 
+      listener.setShutdownCause(shutdownCause);
+
       if (!inhibitForceDisconnectLogging) {
         logger.fatal(
             String.format("Membership service failure: %s", reason),

Reply via email to