From a73511c1db6a099397418d2708e073546e8e0a1b Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 12 Mar 2024 21:49:59 +0100 Subject: [PATCH] Optimize SegmentedJournalReader.getCurrentEntry() This method has very simple logic, the reasoning for which is left unexplained. Add a comment about what is going on and use assign-and-check construct to trim a bit of byte code. JIRA: CONTROLLER-2106 Change-Id: I5d4e5551ae089489636da38600109f7821fa306b Signed-off-by: Robert Varga --- .../atomix/storage/journal/SegmentedJournalReader.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedJournalReader.java b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedJournalReader.java index 3022b51903..e5a9094f36 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedJournalReader.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/SegmentedJournalReader.java @@ -53,11 +53,10 @@ sealed class SegmentedJournalReader implements JournalReader permits Commi @Override public final Indexed getCurrentEntry() { - Indexed currentEntry = currentReader.getCurrentEntry(); - if (currentEntry != null) { - return currentEntry; - } - return previousEntry; + // If previousEntry was the last in the previous segment, we may have moved currentReader to the next segment. + // That segment may be empty, though, in which case we need to report the previousEntry. + final Indexed currentEntry; + return (currentEntry = currentReader.getCurrentEntry()) != null ? currentEntry : previousEntry; } @Override -- 2.36.6