You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2015/12/01 10:28:19 UTC

[1/2] cassandra git commit: Don't throw assertion error on old key cache keys just skip serializing them.

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.1 b2b4f1550 -> 3e5315277


Don't throw assertion error on old key cache keys just skip serializing them.

patch by aweisberg; reviewed by slebresne for CASSANDRA-10778


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4378b58b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4378b58b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4378b58b

Branch: refs/heads/cassandra-3.1
Commit: 4378b58bba61ec6e7eb0bbfa5733cf9800a7dec3
Parents: 44164bc
Author: Ariel Weisberg <ar...@datastax.com>
Authored: Mon Nov 30 14:43:50 2015 -0500
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Dec 1 10:27:10 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../apache/cassandra/service/CacheService.java   |  4 ++++
 .../cassandra/io/sstable/LegacySSTableTest.java  | 19 ++++++++++++++++++-
 3 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/4378b58b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0356045..bd14e67 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.1
+ * Fix error when saving cached key for old format sstable (CASSANDRA-10778)
  * Invalidate prepared statements on DROP INDEX (CASSANDRA-10758)
  * Fix SELECT statement with IN restrictions on partition key,
    ORDER BY and LIMIT (CASSANDRA-10729)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4378b58b/src/java/org/apache/cassandra/service/CacheService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java
index a3e7d12..c51a5d1 100644
--- a/src/java/org/apache/cassandra/service/CacheService.java
+++ b/src/java/org/apache/cassandra/service/CacheService.java
@@ -455,6 +455,10 @@ public class CacheService implements CacheServiceMBean
     {
         public void serialize(KeyCacheKey key, DataOutputPlus out, ColumnFamilyStore cfs) throws IOException
         {
+            //Don't serialize old format entries since we didn't bother to implement serialization of both for simplicity
+            //https://issues.apache.org/jira/browse/CASSANDRA-10778
+            if (!key.desc.version.storeRows()) return;
+
             RowIndexEntry entry = CacheService.instance.keyCache.getInternal(key);
             if (entry == null)
                 return;

http://git-wip-us.apache.org/repos/asf/cassandra/blob/4378b58b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
index 0578d44..00727b8 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -56,6 +56,7 @@ import org.apache.cassandra.io.sstable.format.SSTableReader;
 import org.apache.cassandra.io.sstable.format.Version;
 import org.apache.cassandra.io.sstable.format.big.BigFormat;
 import org.apache.cassandra.schema.KeyspaceParams;
+import org.apache.cassandra.service.CacheService;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.streaming.StreamPlan;
 import org.apache.cassandra.streaming.StreamSession;
@@ -238,7 +239,7 @@ public class LegacySSTableTest
         loadLegacyTables();
     }
 
-    private static void loadLegacyTables() throws IOException
+    private static void loadLegacyTables() throws Exception
     {
         for (String legacyVersion : legacyVersions)
         {
@@ -251,6 +252,8 @@ public class LegacySSTableTest
             loadLegacyTable("legacy_%s_clust", legacyVersion);
             loadLegacyTable("legacy_%s_clust_counter", legacyVersion);
 
+            CacheService.instance.invalidateKeyCache();
+            long startCount = CacheService.instance.keyCache.size();
             for (int ck = 0; ck < 50; ck++)
             {
                 String ckValue = Integer.toString(ck) + longString;
@@ -286,6 +289,20 @@ public class LegacySSTableTest
                     Assert.assertEquals(1L, rs.one().getLong("val"));
                 }
             }
+
+            //For https://issues.apache.org/jira/browse/CASSANDRA-10778
+            //Validate whether the key cache successfully saves in the presence of old keys as
+            //well as loads the correct number of keys
+            long endCount = CacheService.instance.keyCache.size();
+            Assert.assertTrue(endCount > startCount);
+            CacheService.instance.keyCache.submitWrite(Integer.MAX_VALUE).get();
+            CacheService.instance.invalidateKeyCache();
+            Assert.assertEquals(startCount, CacheService.instance.keyCache.size());
+            CacheService.instance.keyCache.loadSaved();
+            if (BigFormat.instance.getVersion(legacyVersion).storeRows())
+                Assert.assertEquals(endCount, CacheService.instance.keyCache.size());
+            else
+                Assert.assertEquals(startCount, CacheService.instance.keyCache.size());
         }
     }
 


[2/2] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.1

Posted by sl...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.1


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3e531527
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3e531527
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3e531527

Branch: refs/heads/cassandra-3.1
Commit: 3e5315277c85cf6abdaea7b733ec346216ca730a
Parents: b2b4f15 4378b58
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Tue Dec 1 10:28:10 2015 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Dec 1 10:28:10 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                      |  1 +
 .../apache/cassandra/service/CacheService.java   |  4 ++++
 .../cassandra/io/sstable/LegacySSTableTest.java  | 19 ++++++++++++++++++-
 3 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3e531527/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 57769db,bd14e67..99777ec
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,5 -1,5 +1,6 @@@
 -3.0.1
 +3.1
 +Merged from 3.0:
+  * Fix error when saving cached key for old format sstable (CASSANDRA-10778)
   * Invalidate prepared statements on DROP INDEX (CASSANDRA-10758)
   * Fix SELECT statement with IN restrictions on partition key,
     ORDER BY and LIMIT (CASSANDRA-10729)