From a2899de1374fc084364184cb97eeb9526f7ddf47 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Mon, 24 Aug 2009 22:03:35 +0000 Subject: [PATCH] [fixed version] avoid opening multiple writers for the current file; the buffered nature of the global logWriter_ could cause problems patch by jbellis; reviewed for CASSANDRA-370 by Sammy Yu git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@807399 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/cassandra/db/CommitLog.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/java/org/apache/cassandra/db/CommitLog.java b/src/java/org/apache/cassandra/db/CommitLog.java index 27691657dd..613b03e5f6 100644 --- a/src/java/org/apache/cassandra/db/CommitLog.java +++ b/src/java/org/apache/cassandra/db/CommitLog.java @@ -246,16 +246,6 @@ public class CommitLog return CommitLogHeader.serializer().deserialize(new DataInputStream(byteStream)); } - /* - * Write the serialized commit log header into the specified commit log. - */ - private static void writeCommitLogHeader(String commitLogFileName, byte[] bytes) throws IOException - { - RandomAccessFile logWriter = CommitLog.createWriter(commitLogFileName); - writeCommitLogHeader(logWriter, bytes); - logWriter.close(); - } - /* * This is invoked on startup via the ctor. It basically * writes a header with all bits set to zero. @@ -509,7 +499,7 @@ public class CommitLog * perform & operation and then turn on with the new position. */ commitLogHeader.turnOn(id, cLogCtx.position); - writeCommitLogHeader(cLogCtx.file, commitLogHeader.toByteArray()); + seekAndWriteCommitLogHeader(commitLogHeader.toByteArray()); break; } else @@ -525,7 +515,9 @@ public class CommitLog } else { - writeCommitLogHeader(oldFile, oldCommitLogHeader.toByteArray()); + RandomAccessFile logWriter = CommitLog.createWriter(oldFile); + writeCommitLogHeader(logWriter, oldCommitLogHeader.toByteArray()); + logWriter.close(); } } }