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

szetszwo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/ratis.git

commit 2442d23a095c7cdf891cd5dab8429110a97c5023
Author: Yaolong Liu <[email protected]>
AuthorDate: Tue Jul 5 02:08:56 2022 +0800

    RATIS-1611. Add notify server step sown event to inform (#669)
---
 .../src/main/java/org/apache/ratis/statemachine/StateMachine.java    | 5 +++++
 .../src/main/java/org/apache/ratis/server/impl/LeaderElection.java   | 1 +
 2 files changed, 6 insertions(+)

diff --git 
a/ratis-server-api/src/main/java/org/apache/ratis/statemachine/StateMachine.java
 
b/ratis-server-api/src/main/java/org/apache/ratis/statemachine/StateMachine.java
index 6373fa9b..6754d50b 100644
--- 
a/ratis-server-api/src/main/java/org/apache/ratis/statemachine/StateMachine.java
+++ 
b/ratis-server-api/src/main/java/org/apache/ratis/statemachine/StateMachine.java
@@ -192,6 +192,11 @@ public interface StateMachine extends Closeable {
      * completely done. Could trigger the cleanup of snapshots.
      */
     default void notifySnapshotInstalled(InstallSnapshotResult result, long 
snapshotIndex) {}
+
+    /**
+     * Notify the {@link StateMachine} that a raft server has step down.
+     */
+    default void notifyServerShutdown(RoleInfoProto roleInfo) {}
   }
 
   /**
diff --git 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
index 0f2515cb..1255046c 100644
--- 
a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
+++ 
b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderElection.java
@@ -322,6 +322,7 @@ class LeaderElection implements Runnable {
           case NOT_IN_CONF:
           case SHUTDOWN:
             server.getRaftServer().close();
+            
server.getStateMachine().event().notifyServerShutdown(server.getRoleInfoProto());
             return false;
           case TIMEOUT:
             continue; // should retry

Reply via email to