You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/08/24 22:31:57 UTC

svn commit: r807364 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java

Author: jbellis
Date: Mon Aug 24 20:31:56 2009
New Revision: 807364

URL: http://svn.apache.org/viewvc?rev=807364&view=rev
Log:
CASSANDRA-370 avoid opening multiple writers for the current file; the buffered nature of the global logWriter_ could cause problems
patch by jbellis; reviewed by Sammy Yu for CASSANDRA-370

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java?rev=807364&r1=807363&r2=807364&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLog.java Mon Aug 24 20:31:56 2009
@@ -247,16 +247,6 @@
     }
 
     /*
-     * 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.
     */
@@ -495,9 +485,9 @@
          * encounter the file in the context in our list of old commit log files
          * then we update the header and write it back to the commit log.
         */
-        for(String oldFile : oldFiles)
+        for (String oldFile : oldFiles)
         {
-            if(oldFile.equals(cLogCtx.file))
+            if (oldFile.equals(cLogCtx.file))
             {
                 /*
                  * We need to turn on again. This is because we always keep
@@ -506,23 +496,25 @@
                  * perform & operation and then turn on with the new position.
                 */
                 commitLogHeader.turnOn(id, cLogCtx.position);
-                writeCommitLogHeader(cLogCtx.file, commitLogHeader.toByteArray());
+                writeCommitLogHeader(logWriter_, commitLogHeader.toByteArray());
                 break;
             }
             else
             {
                 CommitLogHeader oldCommitLogHeader = clHeaders_.get(oldFile);
                 oldCommitLogHeader.and(commitLogHeader);
-                if(oldCommitLogHeader.isSafeToDelete())
+                if (oldCommitLogHeader.isSafeToDelete())
                 {
-                	if (logger_.isDebugEnabled())
-                	  logger_.debug("Deleting commit log:"+ oldFile);
+                    if (logger_.isDebugEnabled())
+                      logger_.debug("Deleting commit log:" + oldFile);
                     FileUtils.deleteAsync(oldFile);
                     listOfDeletedFiles.add(oldFile);
                 }
                 else
                 {
-                    writeCommitLogHeader(oldFile, oldCommitLogHeader.toByteArray());
+                    RandomAccessFile logWriter = CommitLog.createWriter(oldFile);
+                    writeCommitLogHeader(logWriter, oldCommitLogHeader.toByteArray());
+                    logWriter.close();
                 }
             }
         }