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 {