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;
}