You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by lj...@apache.org on 2019/09/27 09:54:01 UTC

[incubator-ratis] branch master updated: RATIS-678. Notify Leader does not provide raft group id. Contributed by Siddharth Wagle.

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

ljain pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git


The following commit(s) were added to refs/heads/master by this push:
     new af8a5bc  RATIS-678. Notify Leader does not provide raft group id. Contributed by Siddharth Wagle.
af8a5bc is described below

commit af8a5bcd3c58b3a263ec6cf836633f839905aa6d
Author: Lokesh Jain <lj...@apache.org>
AuthorDate: Fri Sep 27 15:23:00 2019 +0530

    RATIS-678. Notify Leader does not provide raft group id. Contributed by Siddharth Wagle.
---
 .../src/main/java/org/apache/ratis/server/impl/LeaderState.java  | 2 +-
 .../src/main/java/org/apache/ratis/server/impl/ServerState.java  | 1 +
 .../main/java/org/apache/ratis/statemachine/StateMachine.java    | 9 ++++++++-
 .../apache/ratis/statemachine/SimpleStateMachine4Testing.java    | 2 +-
 4 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
index 8b8b50a..478e3ed 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderState.java
@@ -238,7 +238,7 @@ public class LeaderState {
     CodeInjectionForTesting.execute(APPEND_PLACEHOLDER,
         server.getId().toString(), null);
     raftLog.append(placeHolder);
-    server.getStateMachine().notifyLeader(raftLog.getLastCommittedIndex());
+    server.getStateMachine().notifyLeader(server.getGroup().getGroupId(), raftLog.getLastCommittedIndex());
     processor.start();
     senders.forEach(LogAppender::startAppender);
     return placeHolder;
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
index 82993b5..21f3a57 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/ServerState.java
@@ -250,6 +250,7 @@ public class ServerState implements Closeable {
         Timestamp previous = lastNoLeaderTime;
         lastNoLeaderTime = null;
         suffix = ", leader elected after " + previous.elapsedTimeMs() + "ms";
+        server.getStateMachine().notifyLeaderChanged(server.getGroup().getGroupId(), newLeaderId);
       }
       LOG.info("{}: change Leader from {} to {} at term {} for {}{}",
           getMemberId(), leaderId, newLeaderId, getCurrentTerm(), op, suffix);
diff --git a/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java b/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
index dece95b..a8cfc1d 100644
--- a/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
+++ b/ratis-server/src/main/java/org/apache/ratis/statemachine/StateMachine.java
@@ -20,6 +20,7 @@ package org.apache.ratis.statemachine;
 import org.apache.ratis.protocol.Message;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.RaftGroupId;
+import org.apache.ratis.protocol.RaftPeerId;
 import org.apache.ratis.server.RaftServer;
 import org.apache.ratis.server.RaftServerConfigKeys;
 import org.apache.ratis.server.protocol.TermIndex;
@@ -280,7 +281,13 @@ public interface StateMachine extends Closeable {
   /**
    * Notify the state machine that the raft peer is a leader now.
    */
-  default void notifyLeader(long lastCommittedIndex){
+  default void notifyLeader(RaftGroupId groupId, long lastCommittedIndex){
+  }
+
+  /**
+   * Notify the follower state machine that a RaftPeer has been elected as leader.
+   */
+  default void notifyLeaderChanged(RaftGroupId groupId, RaftPeerId raftPeerId) {
   }
 
   /**
diff --git a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
index fdc3c7d..d0eeb21 100644
--- a/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
+++ b/ratis-server/src/test/java/org/apache/ratis/statemachine/SimpleStateMachine4Testing.java
@@ -423,7 +423,7 @@ public class SimpleStateMachine4Testing extends BaseStateMachine {
 
   }
 
-  @Override public void notifyLeader(long lastCommittedIndex) {
+  @Override public void notifyLeader(RaftGroupId groupId, long lastCommittedIndex) {
     notifiedAsLeader = true;
   }