szetszwo commented on code in PR #688:
URL: https://github.com/apache/ratis/pull/688#discussion_r926948970
##########
ratis-server-api/src/main/java/org/apache/ratis/server/RaftServerConfigKeys.java:
##########
@@ -285,6 +285,15 @@ static void setPurgeUptoSnapshotIndex(RaftProperties
properties, boolean shouldP
setBoolean(properties::setBoolean, PURGE_UPTO_SNAPSHOT_INDEX_KEY,
shouldPurgeUptoSnapshotIndex);
}
+ String PURGE_PRESERVE_LOG_NUM_KEY = PREFIX + "purge.preserve.log.num";
Review Comment:
"preserve" is a good word choice. Let's call it ".purge. preservation" so
that it is similar to ".purge.gap".
BTW, it needs a "." in the beginning.
##########
ratis-server/src/main/java/org/apache/ratis/server/impl/StateMachineUpdater.java:
##########
@@ -297,7 +299,8 @@ private void takeSnapshot() {
CommitInfoProto::getCommitIndex);
purgeIndex = LongStream.concat(LongStream.of(i),
commitIndexStream).min().orElse(i);
}
- raftLog.purge(purgeIndex);
+ final long purgeIndexWithPreserve = Math.max(0L, purgeIndex -
purgePreserveLogNum);
+ raftLog.purge(purgeIndexWithPreserve);
Review Comment:
Let's change it in RaftLogBase.purge(..) so that the new code will be next
to the purgeGap code. We may add a `purgePreservation` field and use it as
below
```
+++
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogBase.java
@@ -301,6 +301,10 @@ public abstract class RaftLogBase implements RaftLog {
@Override
public final CompletableFuture<Long> purge(long suggestedIndex) {
+ if (purgePreservation > 0) {
+ final long currentIndex = getNextIndex() - 1;
+ suggestedIndex = Math.min(suggestedIndex, currentIndex -
purgePreservation);
+ }
final long lastPurge = purgeIndex.get();
if (suggestedIndex - lastPurge < purgeGap) {
return CompletableFuture.completedFuture(lastPurge);
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]