From: Oleksandr Zharov Date: Thu, 14 Mar 2024 13:46:11 +0000 (+0100) Subject: Improve FileChannelJournalSegmentWriter's buffer management X-Git-Tag: v9.0.1~9 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=bb9ef9945ec33f0025a4a426f44c416fb1e0531f Improve FileChannelJournalSegmentWriter's buffer management Minor refactor of logic in FileChannelJournalSegmentWriter class. Removed unnecessary buffer clearing after each entry. New logic remove already proccesed entry from the buffer and if needed reads new data from FileChannel to it's capacity. JIRA: CONTROLLER-2097 Change-Id: I571d531437b068cd468bdc92b3ab6a4223450a45 Signed-off-by: Oleksandr Zharov --- diff --git a/atomix-storage/src/main/java/io/atomix/storage/journal/FileChannelJournalSegmentWriter.java b/atomix-storage/src/main/java/io/atomix/storage/journal/FileChannelJournalSegmentWriter.java index 4d3aa78363..d6d77fbe02 100644 --- a/atomix-storage/src/main/java/io/atomix/storage/journal/FileChannelJournalSegmentWriter.java +++ b/atomix-storage/src/main/java/io/atomix/storage/journal/FileChannelJournalSegmentWriter.java @@ -134,8 +134,8 @@ final class FileChannelJournalSegmentWriter extends JournalSegmentWriter { // Read more bytes from the segment if necessary. if (memory.remaining() < maxEntrySize) { - memory.clear(); - channel.read(memory, currentPosition); + memory.compact(); + channel.read(memory); memory.flip(); }