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 2018/11/13 15:31:56 UTC
[3/6] cassandra git commit: Fix missing rows when reading 2.1
SSTables with static columns in 3.0
Fix missing rows when reading 2.1 SSTables with static columns in 3.0
patch by Aleksey Yeschenko; reviewed by Blake Eggleston for
CASSANDRA-14873
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9eee7aa7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9eee7aa7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9eee7aa7
Branch: refs/heads/trunk
Commit: 9eee7aa7874c17ab28d43ff58c97da889c87e397
Parents: a270ee7
Author: Aleksey Yeshchenko <al...@apple.com>
Authored: Thu Nov 8 14:02:21 2018 -0800
Committer: Aleksey Yeshchenko <al...@apple.com>
Committed: Mon Nov 12 19:27:31 2018 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/db/Serializers.java | 3 ++
...bles-legacy_ka_14873-ka-1-CompressionInfo.db | Bin 0 -> 43 bytes
.../legacy_tables-legacy_ka_14873-ka-1-Data.db | Bin 0 -> 232 bytes
...gacy_tables-legacy_ka_14873-ka-1-Digest.sha1 | 1 +
...legacy_tables-legacy_ka_14873-ka-1-Filter.db | Bin 0 -> 16 bytes
.../legacy_tables-legacy_ka_14873-ka-1-Index.db | Bin 0 -> 118 bytes
...cy_tables-legacy_ka_14873-ka-1-Statistics.db | Bin 0 -> 4446 bytes
...egacy_tables-legacy_ka_14873-ka-1-Summary.db | Bin 0 -> 92 bytes
.../legacy_tables-legacy_ka_14873-ka-1-TOC.txt | 8 ++++
.../cassandra/io/sstable/LegacySSTableTest.java | 38 +++++++++++++++++++
11 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d9eb316..3284250 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.18
+ * Fix missing rows when reading 2.1 SSTables with static columns in 3.0 (CASSANDRA-14873)
* Move TWCS message 'No compaction necessary for bucket size' to Trace level (CASSANDRA-14884)
* Sstable min/max metadata can cause data loss (CASSANDRA-14861)
* Dropped columns can cause reverse sstable iteration to return prematurely (CASSANDRA-14838)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/src/java/org/apache/cassandra/db/Serializers.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Serializers.java b/src/java/org/apache/cassandra/db/Serializers.java
index 348fda3..bf340e7 100644
--- a/src/java/org/apache/cassandra/db/Serializers.java
+++ b/src/java/org/apache/cassandra/db/Serializers.java
@@ -79,6 +79,9 @@ public class Serializers
if (clusteringSize == 0)
return Clustering.EMPTY;
+ if (metadata.isCompound() && CompositeType.isStaticName(bb))
+ return Clustering.STATIC_CLUSTERING;
+
if (!metadata.isCompound())
return new Clustering(bb);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db
new file mode 100644
index 0000000..4a87419
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-CompressionInfo.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Data.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Data.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Data.db
new file mode 100644
index 0000000..007cc50
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Data.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Digest.sha1
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Digest.sha1 b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Digest.sha1
new file mode 100644
index 0000000..71e6242
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Digest.sha1
@@ -0,0 +1 @@
+4060752841
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Filter.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Filter.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Filter.db
new file mode 100644
index 0000000..7a31048
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Filter.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Index.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Index.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Index.db
new file mode 100644
index 0000000..7245332
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Index.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db
new file mode 100644
index 0000000..f4b26ee0
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Statistics.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Summary.db
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Summary.db b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Summary.db
new file mode 100644
index 0000000..c1784f4
Binary files /dev/null and b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-Summary.db differ
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-TOC.txt
----------------------------------------------------------------------
diff --git a/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-TOC.txt b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-TOC.txt
new file mode 100644
index 0000000..db5ac46
--- /dev/null
+++ b/test/data/legacy-sstables/ka/legacy_tables/legacy_ka_14873/legacy_tables-legacy_ka_14873-ka-1-TOC.txt
@@ -0,0 +1,8 @@
+Data.db
+TOC.txt
+Digest.sha1
+Filter.db
+Statistics.db
+CompressionInfo.db
+Summary.db
+Index.db
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9eee7aa7/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 5c65b31..df042e7 100644
--- a/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
+++ b/test/unit/org/apache/cassandra/io/sstable/LegacySSTableTest.java
@@ -243,6 +243,44 @@ public class LegacySSTableTest
}
@Test
+ public void test14873() throws Exception
+ {
+ /*
+ * When reading 2.1 sstables in 3.0 in reverse order it's possible to wrongly return an empty result set if the
+ * partition being read has a static row, and the read is performed backwards.
+ */
+
+ /*
+ * Contents of the SSTable (column_index_size_in_kb: 1) below:
+ *
+ * insert into legacy_tables.legacy_ka_14873 (pkc, sc) values (0, 0);
+ * insert into legacy_tables.legacy_ka_14873 (pkc, cc, rc) values (0, 5, '5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555');
+ * insert into legacy_tables.legacy_ka_14873 (pkc, cc, rc) values (0, 4, '4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444');
+ * insert into legacy_tables.legacy_ka_14873 (pkc, cc, rc) values (0, 3, '3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333');
+ * insert into legacy_tables.legacy_ka_14873 (pkc, cc, rc) values (0, 2, '2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222');
+ * insert into legacy_tables.legacy_ka_14873 (pkc, cc, rc) values (0, 1, '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111');
+ */
+
+ String ddl =
+ "CREATE TABLE legacy_tables.legacy_ka_14873 ("
+ + "pkc int, cc int, sc int static, rc text, PRIMARY KEY (pkc, cc)"
+ + ") WITH CLUSTERING ORDER BY (cc DESC) AND compaction = {'enabled' : 'false', 'class' : 'LeveledCompactionStrategy'};";
+ QueryProcessor.executeInternal(ddl);
+ loadLegacyTable("legacy_%s_14873%s", "ka", "");
+
+ UntypedResultSet forward =
+ QueryProcessor.executeOnceInternal(
+ String.format("SELECT * FROM legacy_tables.legacy_ka_14873 WHERE pkc = 0 AND cc > 0 ORDER BY cc DESC;"));
+
+ UntypedResultSet reverse =
+ QueryProcessor.executeOnceInternal(
+ String.format("SELECT * FROM legacy_tables.legacy_ka_14873 WHERE pkc = 0 AND cc > 0 ORDER BY cc ASC;"));
+
+ Assert.assertEquals(5, forward.size());
+ Assert.assertEquals(5, reverse.size());
+ }
+
+ @Test
public void testMultiBlockRangeTombstones() throws Exception
{
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org