From a8f35d5b4cd030b1cf3d4034a26951f43ae5919e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 9 May 2024 00:00:34 +0200 Subject: [PATCH] Merge SegmentedByteBufWriter.checkedTruncate() This method has a single caller, just merge them together. JIRA: CONTROLLER-2100 Change-Id: Ibf9424e71c9c1dd9e862b00a75d4ed76cd29cc0d Signed-off-by: Robert Varga --- .../journal/SegmentedByteBufWriter.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java index 5ef55393fe..75ecc26afd 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedByteBufWriter.java @@ -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 -- 2.36.6