You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2014/02/18 23:25:06 UTC
git commit: Fix replaying pre-2.0 commit logs
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 6a34b5651 -> ad3a4f824
Fix replaying pre-2.0 commit logs
patch by Aleksey Yeschenko; reviewed by Jonathan Ellis for
CASSANDRA-6714
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ad3a4f82
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ad3a4f82
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ad3a4f82
Branch: refs/heads/cassandra-2.0
Commit: ad3a4f824e6d0f1484883f78498e3a07592259b3
Parents: 6a34b56
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Wed Feb 19 01:21:13 2014 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Wed Feb 19 01:22:59 2014 +0300
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/db/commitlog/CommitLogDescriptor.java | 6 +++++-
.../cassandra/db/commitlog/CommitLogReplayer.java | 15 ++++++++-------
3 files changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ad3a4f82/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a5da346..95faf18 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -17,6 +17,7 @@
* Improve support for paginating over composites (CASSANDRA-4851)
* Fix count(*) queries in a mixed cluster (CASSANDRA-6707)
* Improve repair tasks(snapshot, differencing) concurrency (CASSANDRA-6566)
+ * Fix replaying pre-2.0 commit logs (CASSANDRA-6714)
Merged from 1.2:
* Fix broken streams when replacing with same IP (CASSANDRA-6622)
* Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ad3a4f82/src/java/org/apache/cassandra/db/commitlog/CommitLogDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogDescriptor.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogDescriptor.java
index 87de7d8..7488c20 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogDescriptor.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogDescriptor.java
@@ -70,7 +70,6 @@ public class CommitLogDescriptor
public int getMessagingVersion()
{
- assert MessagingService.current_version == MessagingService.VERSION_20;
switch (version)
{
case VERSION_12:
@@ -82,6 +81,11 @@ public class CommitLogDescriptor
}
}
+ public int getVersion()
+ {
+ return version;
+ }
+
public String fileName()
{
return FILENAME_PREFIX + version + SEPARATOR + id + FILENAME_EXTENSION;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/ad3a4f82/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index 44713ad..56cd4ff 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -179,11 +179,12 @@ public class CommitLogReplayer
public void recover(File file) throws IOException
{
final ReplayFilter replayFilter = ReplayFilter.create();
-
- logger.info("Replaying " + file.getPath());
CommitLogDescriptor desc = CommitLogDescriptor.fromFileName(file.getName());
final long segment = desc.id;
- int version = desc.getMessagingVersion();
+ logger.info("Replaying {} (CL version {}, messaging version {})",
+ file.getPath(),
+ desc.getVersion(),
+ desc.getMessagingVersion());
RandomAccessReader reader = RandomAccessReader.open(new File(file.getAbsolutePath()));
try
{
@@ -234,7 +235,7 @@ public class CommitLogReplayer
long claimedSizeChecksum = reader.readLong();
checksum.reset();
- if (version < CommitLogDescriptor.VERSION_20)
+ if (desc.getVersion() < CommitLogDescriptor.VERSION_20)
checksum.update(serializedSize);
else
FBUtilities.updateChecksumInt(checksum, serializedSize);
@@ -266,9 +267,9 @@ public class CommitLogReplayer
final RowMutation rm;
try
{
- // assuming version here. We've gone to lengths to make sure what gets written to the CL is in
- // the current version. so do make sure the CL is drained prior to upgrading a node.
- rm = RowMutation.serializer.deserialize(new DataInputStream(bufIn), version, ColumnSerializer.Flag.LOCAL);
+ rm = RowMutation.serializer.deserialize(new DataInputStream(bufIn),
+ desc.getMessagingVersion(),
+ ColumnSerializer.Flag.LOCAL);
// doublecheck that what we read is [still] valid for the current schema
for (ColumnFamily cf : rm.getColumnFamilies())
for (Column cell : cf)