This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ratis.git
The following commit(s) were added to refs/heads/master by this push:
new 494aa253 RATIS-1611. Add notify server step sown event to inform (#669)
494aa253 is described below
commit 494aa253eb6dc93573b41761900d52cecee6b171
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