You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2013/05/04 20:43:27 UTC
[3/5] git commit: fsync leveled manifest to avoid it getting corrupt
fsync leveled manifest to avoid it getting corrupt
Patch by marcuse, reviewed by jbellis and carlyeks for CASSANDRA-5535
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fe910e6c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fe910e6c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fe910e6c
Branch: refs/heads/trunk
Commit: fe910e6c90d81cc61c16859bcef9f0dcb42cc827
Parents: b4b4f6a
Author: Marcus Eriksson <ma...@spotify.com>
Authored: Sat May 4 18:49:04 2013 +0200
Committer: Marcus Eriksson <ma...@spotify.com>
Committed: Sat May 4 20:28:03 2013 +0200
----------------------------------------------------------------------
CHANGES.txt | 2 +-
.../cassandra/db/compaction/LeveledManifest.java | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe910e6c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 30a09c9..5a559a8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -2,7 +2,7 @@
* Add retry mechanism to OTC for non-droppable_verbs (CASSANDRA-5393)
* Use allocator information to improve memtable memory usage estimate
(CASSANDRA-5497)
-
+ * fsync leveled manifest to avoid corruption (CASSANDRA-5535)
1.1.11
* Fix trying to load deleted row into row cache on startup (CASSANDRA-4463)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/fe910e6c/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index 5f22109..8ac7028 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@ -22,6 +22,7 @@ package org.apache.cassandra.db.compaction;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOError;
import java.io.IOException;
import java.util.*;
@@ -534,7 +535,8 @@ public class LeveledManifest
JsonFactory f = new JsonFactory();
try
{
- JsonGenerator g = f.createJsonGenerator(tmpFile, JsonEncoding.UTF8);
+ FileOutputStream fos = new FileOutputStream(tmpFile);
+ JsonGenerator g = f.createJsonGenerator(fos, JsonEncoding.UTF8);
g.useDefaultPrettyPrinter();
g.writeStartObject();
g.writeArrayFieldStart("generations");
@@ -551,6 +553,8 @@ public class LeveledManifest
}
g.writeEndArray(); // for field generations
g.writeEndObject(); // write global object
+ g.flush();
+ fos.getFD().sync();
g.close();
if (oldFile.exists() && manifestFile.exists())