This is an automated email from the ASF dual-hosted git repository.

tanxinyu pushed a commit to branch snapshot-3
in repository https://gitbox.apache.org/repos/asf/ratis.git

commit 5ed4341b054f2c5c8e2ce0f4be9f909c19ec892d
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);
           }
         }
       }

Reply via email to