Improve FileChannelJournalSegmentWriter's buffer management 35/110735/3
authorOleksandr Zharov <oleksandr.zharov@pantheon.tech>
Thu, 14 Mar 2024 13:46:11 +0000 (14:46 +0100)
committerRobert Varga <nite@hq.sk>
Fri, 15 Mar 2024 08:56:18 +0000 (08:56 +0000)
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 <oleksandr.zharov@pantheon.tech>
atomix-storage/src/main/java/io/atomix/storage/journal/FileChannelJournalSegmentWriter.java

index 4d3aa783637828ef189c5af5ec54e51d5698b0f3..d6d77fbe02e48a31cd79d8babc5fe7c351945e4e 100644 (file)
@@ -134,8 +134,8 @@ final class FileChannelJournalSegmentWriter<E> extends JournalSegmentWriter<E> {
 
         // 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();
         }