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 8913a999d RATIS-2056. Update purge index when snapshot installed.
(#1065)
8913a999d is described below
commit 8913a999dd79cda58d18e17f4dd7971dda7070b7
Author: William Song <[email protected]>
AuthorDate: Sat Apr 13 02:05:11 2024 +0800
RATIS-2056. Update purge index when snapshot installed. (#1065)
---
.../java/org/apache/ratis/server/raftlog/RaftLogBase.java | 12 +++++++++---
.../ratis/server/raftlog/segmented/SegmentedRaftLog.java | 4 ++--
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogBase.java
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogBase.java
index 9e079564f..a41d90b1a 100644
---
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogBase.java
+++
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/RaftLogBase.java
@@ -142,6 +142,14 @@ public abstract class RaftLogBase implements RaftLog {
return false;
}
+ protected void updatePurgeIndex(Long purged) {
+ try (AutoCloseableLock writeLock = writeLock()) {
+ if (purged != null) {
+ purgeIndex.updateToMax(purged, infoIndexChange);
+ }
+ }
+ }
+
protected void updateSnapshotIndexFromStateMachine() {
updateSnapshotIndex(getSnapshotIndexFromStateMachine.getAsLong());
}
@@ -340,9 +348,7 @@ public abstract class RaftLogBase implements RaftLog {
LOG.info("{}: purge {}", getName(), suggestedIndex);
final long finalSuggestedIndex = suggestedIndex;
return purgeImpl(suggestedIndex).whenComplete((purged, e) -> {
- if (purged != null) {
- purgeIndex.updateToMax(purged, infoIndexChange);
- }
+ updatePurgeIndex(purged);
if (e != null) {
LOG.warn(getName() + ": Failed to purge " + finalSuggestedIndex, e);
}
diff --git
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
index 8d972a1e2..7f9ef3098 100644
---
a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
+++
b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLog.java
@@ -272,7 +272,7 @@ public final class SegmentedRaftLog extends RaftLogBase {
if (!cache.isEmpty() && cache.getEndIndex() < lastIndexInSnapshot) {
LOG.warn("End log index {} is smaller than last index in snapshot {}",
cache.getEndIndex(), lastIndexInSnapshot);
- purgeImpl(lastIndexInSnapshot);
+ purgeImpl(lastIndexInSnapshot).whenComplete((purged, e) ->
updatePurgeIndex(purged));
}
}
}
@@ -557,7 +557,7 @@ public final class SegmentedRaftLog extends RaftLogBase {
cacheEviction.signal();
}
}
- return purgeImpl(lastSnapshotIndex);
+ return purgeImpl(lastSnapshotIndex).whenComplete((purged, e) ->
updatePurgeIndex(purged));
}
@Override