Author: jbellis
Date: Tue Jul 20 16:23:03 2010
New Revision: 965894

URL: http://svn.apache.org/viewvc?rev=965894&view=rev
Log:
avoid replaying fully-flushed commitlog segments.  patch by jbellis; reviewed 
by mdennis for CASSANDRA-1298

Modified:
    cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
    
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=965894&r1=965893&r2=965894&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
Tue Jul 20 16:23:03 2010
@@ -203,6 +203,11 @@ public class CommitLog
                 logger.info(headerPath + " incomplete, missing or corrupt.  
Everything is ok, don't panic.  CommitLog will be replayed from the beginning");
                 logger.debug("exception was", ioe);
             }
+            if (replayPosition < 0)
+            {
+                logger.debug("skipping replay of fully-flushed {}", file);
+                continue;
+            }
             reader.seek(replayPosition);
 
             if (logger.isDebugEnabled())

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java?rev=965894&r1=965893&r2=965894&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogHeader.java 
Tue Jul 20 16:23:03 2010
@@ -147,7 +147,7 @@ public class CommitLogHeader
 
     int getReplayPosition()
     {
-        return cfDirtiedAt.isEmpty() ? 0 : 
Collections.min(cfDirtiedAt.values());
+        return cfDirtiedAt.isEmpty() ? -1 : 
Collections.min(cfDirtiedAt.values());
     }
 
     static class CommitLogHeaderSerializer implements 
ICompactSerializer2<CommitLogHeader>

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java?rev=965894&r1=965893&r2=965894&view=diff
==============================================================================
--- 
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
 (original)
+++ 
cassandra/trunk/test/unit/org/apache/cassandra/db/commitlog/CommitLogHeaderTest.java
 Tue Jul 20 16:23:03 2010
@@ -33,7 +33,7 @@ public class CommitLogHeaderTest extends
     public void testEmptyHeader()
     {
         CommitLogHeader clh = new CommitLogHeader();
-        assert clh.getReplayPosition() == 0;
+        assert clh.getReplayPosition() < 0;
     }
     
     @Test
@@ -47,14 +47,7 @@ public class CommitLogHeaderTest extends
         clh.turnOn(65, 2);
         assert clh.getReplayPosition() == 0;
     }
-    
-    @Test
-    public void lowestPositionEmpty()
-    {
-        CommitLogHeader clh = new CommitLogHeader();
-        assert clh.getReplayPosition() == 0;
-    }
-    
+        
     @Test
     public void constantSize() throws IOException
     {


Reply via email to