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 b8ce6d1f6 RATIS-1883. Next Index should be always larger than Match 
Index in GrpcLogAppender (#914)
b8ce6d1f6 is described below

commit b8ce6d1f6ea37ed3ff9f6e888d2357fe48490567
Author: Anpu Lu <[email protected]>
AuthorDate: Fri Sep 8 04:46:36 2023 +0800

    RATIS-1883. Next Index should be always larger than Match Index in 
GrpcLogAppender (#914)
---
 .../src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java | 3 ++-
 .../org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java   | 6 +++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git 
a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java 
b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
index 63ef10a02..eb3195326 100644
--- a/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
+++ b/ratis-grpc/src/main/java/org/apache/ratis/grpc/server/GrpcLogAppender.java
@@ -420,6 +420,7 @@ public class GrpcLogAppender extends LogAppenderBase {
           grpcServerMetrics.onRequestSuccess(getFollowerId().toString(), 
reply.getIsHearbeat());
           getLeaderState().onFollowerCommitIndex(getFollower(), 
reply.getFollowerCommit());
           if (getFollower().updateMatchIndex(reply.getMatchIndex())) {
+            getFollower().increaseNextIndex(reply.getMatchIndex() + 1);
             getLeaderState().onFollowerSuccessAppendEntries(getFollower());
           }
           break;
@@ -433,7 +434,7 @@ public class GrpcLogAppender extends LogAppenderBase {
         case INCONSISTENCY:
           grpcServerMetrics.onRequestInconsistency(getFollowerId().toString());
           LOG.warn("{}: received {} reply with nextIndex {}", this, 
reply.getResult(), reply.getNextIndex());
-          updateNextIndex(reply.getNextIndex());
+          updateNextIndex(Math.max(getFollower().getMatchIndex() + 1, 
reply.getNextIndex()));
           break;
         default:
           throw new IllegalStateException("Unexpected reply result: " + 
reply.getResult());
diff --git 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
index 75e0ea794..b43c696c7 100644
--- 
a/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
+++ 
b/ratis-server/src/test/java/org/apache/ratis/server/impl/RaftReconfigurationBaseTest.java
@@ -365,7 +365,7 @@ public abstract class RaftReconfigurationBaseTest<CLUSTER 
extends MiniRaftCluste
       // start the two new peers
       LOG.info("Start new peers");
       for (RaftPeer np : c1.newPeers) {
-        cluster.restartServer(np.getId(), true);
+        cluster.restartServer(np.getId(), false);
       }
       
Assert.assertTrue(client.admin().setConfiguration(c1.allPeersInNewConf).isSuccess());
     }
@@ -422,7 +422,7 @@ public abstract class RaftReconfigurationBaseTest<CLUSTER 
extends MiniRaftCluste
           ONE_SECOND.sleep();
           LOG.info("start new peer(s): {}", c1.newPeers);
           for(RaftPeer p : c1.newPeers) {
-            cluster.restartServer(p.getId(), true);
+            cluster.restartServer(p.getId(), false);
           }
         }
 
@@ -504,7 +504,7 @@ public abstract class RaftReconfigurationBaseTest<CLUSTER 
extends MiniRaftCluste
 
       LOG.info("start new peers: {}", Arrays.asList(c1.newPeers));
       for (RaftPeer np : c1.newPeers) {
-        cluster.restartServer(np.getId(), true);
+        cluster.restartServer(np.getId(), false);
       }
 
       try {

Reply via email to