From 00ebcdc9f20d6e459cd277cfa42312a2be4dfc17 Mon Sep 17 00:00:00 2001 From: Alex Petrov Date: Mon, 26 Aug 2024 20:24:41 +0200 Subject: [PATCH] Fix a problem with static segments being opened with an empty offset after switch unless active segments offset file was closed Patch by Alex Petrov; reviewed by Aleksey Yeschenko for CASSANDRA-19867 --- src/java/org/apache/cassandra/journal/ActiveSegment.java | 1 + src/java/org/apache/cassandra/journal/SyncedOffsets.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/java/org/apache/cassandra/journal/ActiveSegment.java b/src/java/org/apache/cassandra/journal/ActiveSegment.java index a815d23199..1bee25a96f 100644 --- a/src/java/org/apache/cassandra/journal/ActiveSegment.java +++ b/src/java/org/apache/cassandra/journal/ActiveSegment.java @@ -183,6 +183,7 @@ final class ActiveSegment extends Segment { index.persist(descriptor); metadata.persist(descriptor); + syncedOffsets.fsync(); SyncUtil.trySyncDir(descriptor.directory); } diff --git a/src/java/org/apache/cassandra/journal/SyncedOffsets.java b/src/java/org/apache/cassandra/journal/SyncedOffsets.java index cd05e6f8ac..8a89f72ad7 100644 --- a/src/java/org/apache/cassandra/journal/SyncedOffsets.java +++ b/src/java/org/apache/cassandra/journal/SyncedOffsets.java @@ -135,6 +135,7 @@ interface SyncedOffsets extends Closeable { output.writeInt(offset); output.writeInt((int) crc.getValue()); + output.flush(); } catch (IOException e) {