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
{