Merge SegmentedByteBufWriter.checkedTruncate() 68/111668/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 8 May 2024 22:00:34 +0000 (00:00 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 8 May 2024 22:35:11 +0000 (00:35 +0200)
This method has a single caller, just merge them together.

JIRA: CONTROLLER-2100
Change-Id: Ibf9424e71c9c1dd9e862b00a75d4ed76cd29cc0d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java

index 5ef55393fe1ddae88306f4c10ea6957222237a90..75ecc26afd0b494732c067bf11cac24ce799ada8 100644 (file)
@@ -77,30 +77,27 @@ final class SegmentedByteBufWriter implements ByteBufWriter {
         final var prevIndex = index - 1;
         if (prevIndex == lastIndex) {
             // already at the correct position: no-op
-        } else if (prevIndex < lastIndex) {
-            // move back
-            checkedTruncate(prevIndex);
-            journal.resetHead(index);
-        } else {
+            return;
+        }
+        if (prevIndex > lastIndex) {
             // cannot seek past last written entry
             throw new IndexOutOfBoundsException("Cannot reset to: " + index + ", lastIndex: " + lastIndex);
         }
-    }
 
-    private void checkedTruncate(final long index) {
-        // Delete all segments with first indexes greater than the given index.
-        while (index < currentSegment.firstIndex() && currentSegment != journal.firstSegment()) {
+        // move back:
+        // 1. delete all segments with first indexes greater than the given index.
+        while (prevIndex < currentSegment.firstIndex() && currentSegment != journal.firstSegment()) {
             currentSegment.releaseWriter();
             journal.removeSegment(currentSegment);
             currentSegment = journal.lastSegment();
             currentWriter = currentSegment.acquireWriter();
         }
+        // 2. truncate the current index.
+        currentWriter.truncate(prevIndex);
 
-        // Truncate the current index.
-        currentWriter.truncate(index);
-
-        // Reset segment readers.
-        journal.resetTail(index + 1);
+        // 3. reset segment readers.
+        journal.resetTail(index);
+        journal.resetHead(index);
     }
 
     @Override