This is an automated email from the ASF dual-hosted git repository.

bdeggleston pushed a commit to branch cep-45-mutation-tracking
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cep-45-mutation-tracking by 
this push:
     new 7fe059077a CEP-45 - flushing memtables directly to repaired set 
corrupts sstables
7fe059077a is described below

commit 7fe059077a96258a6366b3fc1119003f6e03aa88
Author: Blake Eggleston <[email protected]>
AuthorDate: Tue Oct 20 09:25:16 2026 -0700

    CEP-45 - flushing memtables directly to repaired set corrupts sstables
    
    Patch by Blake Eggleston; Reviewed by Francisco Guerrero for CASSANDRA-21789
---
 .../org/apache/cassandra/io/sstable/format/SSTableWriter.java  | 10 +++++++++-
 .../cassandra/io/sstable/metadata/MetadataSerializer.java      |  2 ++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java 
b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java
index 27957132ab..1bec4cea35 100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableWriter.java
@@ -19,6 +19,7 @@
 package org.apache.cassandra.io.sstable.format;
 
 import java.io.IOError;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -460,7 +461,14 @@ public abstract class SSTableWriter extends SSTable 
implements Transactional
                 if (finalReader.getSSTableMetadata().repairedAt != 
stale.repairedAt)
                 {
                     metadata.put(MetadataType.STATS, 
finalReader.getSSTableMetadata());
-                    new StatsComponent(metadata).save(descriptor);
+                    try
+                    {
+                        
descriptor.getMetadataSerializer().rewriteSSTableMetadata(descriptor, metadata);
+                    }
+                    catch (IOException e)
+                    {
+                        throw new FSWriteError(e, 
descriptor.fileFor(Components.STATS));
+                    }
                 }
             }
         }
diff --git 
a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java 
b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
index 36325eea5f..4a4ed117f1 100644
--- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
+++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
@@ -47,6 +47,7 @@ import org.apache.cassandra.io.util.File;
 import org.apache.cassandra.io.util.FileDataInput;
 import org.apache.cassandra.io.util.RandomAccessReader;
 import org.apache.cassandra.replication.ImmutableCoordinatorLogOffsets;
+import org.apache.cassandra.utils.SyncUtil;
 import org.apache.cassandra.utils.TimeUUID;
 
 import static org.apache.cassandra.utils.FBUtilities.updateChecksumInt;
@@ -282,5 +283,6 @@ public class MetadataSerializer implements 
IMetadataSerializer
             throw new FSWriteError(e, file);
         }
         file.move(descriptor.fileFor(Components.STATS));
+        SyncUtil.trySyncDir(descriptor.directory);
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to