You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by wi...@apache.org on 2025/01/09 11:16:24 UTC

(ratis) 02/14: RATIS-2177. Purge should delete segmentLog from small to large according to logIndex (#1174)

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 <97...@users.noreply.github.com>
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);
           }
         }
       }