This is an automated email from the ASF dual-hosted git repository. williamsong pushed a commit to branch release-3.1.3 in repository https://gitbox.apache.org/repos/asf/ratis.git
commit d52285d0e71ec36c8812758b09da383f74f39245 Author: 133tosakarin <[email protected]> AuthorDate: Sun Nov 10 10:17:29 2024 +0800 RATIS-2177. Purge should delete segmentLog from small to large according to logIndex (#1174) --- .../ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java index a8482e71b..c59c37be8 100644 --- a/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java +++ b/ratis-server/src/main/java/org/apache/ratis/server/raftlog/segmented/SegmentedRaftLogWorker.java @@ -476,9 +476,10 @@ class SegmentedRaftLogWorker { void execute() throws IOException { if (segments.getToDelete() != null) { try(UncheckedAutoCloseable ignored = raftLogMetrics.startPurgeTimer()) { - for (SegmentFileInfo fileInfo : segments.getToDelete()) { - final Path deleted = FileUtils.deleteFile(fileInfo.getFile(storage)); - LOG.info("{}: Purged RaftLog segment: info={}, path={}", name, fileInfo, deleted); + SegmentFileInfo[] toDeletes = segments.getToDelete(); + for (int i = toDeletes.length - 1; i >= 0; i--) { + final Path deleted = FileUtils.deleteFile(toDeletes[i].getFile(storage)); + LOG.info("{}: Purged RaftLog segment: info={}, path={}", name, toDeletes[i], deleted); } } }
