This is an automated email from the ASF dual-hosted git repository.

aweisberg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c1479b  SSTable loader exception when loading 3.0/3.11 compact tables 
into 4.0
4c1479b is described below

commit 4c1479b5f457c3a8ed0302461ef79331cc13e798
Author: Dinesh A. Joshi <[email protected]>
AuthorDate: Mon Jan 14 17:39:16 2019 -0500

    SSTable loader exception when loading 3.0/3.11 compact tables into 4.0
    
    Patch by Dinesh Joshi; Reviewed by Ariel Weisberg for CASSANDRA-14895
---
 dtest.py                                     | 14 ++++++++++++--
 sstable_generation_loading_test.py           | 16 ++++++++++++++--
 upgrade_tests/storage_engine_upgrade_test.py |  2 --
 3 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/dtest.py b/dtest.py
index 9027d75..ec79771 100644
--- a/dtest.py
+++ b/dtest.py
@@ -270,6 +270,7 @@ class Tester:
         except TimeoutError:
             pytest.fail("Log message was not seen within 
timeout:\n{0}".format(msg))
 
+
 def get_eager_protocol_version(cassandra_version):
     """
     Returns the highest protocol version accepted
@@ -288,7 +289,8 @@ def get_eager_protocol_version(cassandra_version):
 
 # We default to UTF8Type because it's simpler to use in tests
 def create_cf(session, name, key_type="varchar", speculative_retry=None, 
read_repair=None, compression=None,
-              gc_grace=None, columns=None, validation="UTF8Type", 
compact_storage=False, compaction_strategy='SizeTieredCompactionStrategy'):
+              gc_grace=None, columns=None, validation="UTF8Type", 
compact_storage=False, compaction_strategy='SizeTieredCompactionStrategy',
+              primary_key=None, clustering=None):
 
     compaction_fragment = "compaction = {'class': '%s', 'enabled': 'true'}"
     if compaction_strategy == '':
@@ -304,11 +306,17 @@ def create_cf(session, name, key_type="varchar", 
speculative_retry=None, read_re
     if additional_columns == "":
         query = 'CREATE COLUMNFAMILY %s (key %s, c varchar, v varchar, PRIMARY 
KEY(key, c)) WITH comment=\'test cf\'' % (name, key_type)
     else:
-        query = 'CREATE COLUMNFAMILY %s (key %s PRIMARY KEY%s) WITH 
comment=\'test cf\'' % (name, key_type, additional_columns)
+        if primary_key:
+            query = 'CREATE COLUMNFAMILY %s (key %s%s, PRIMARY KEY(%s)) WITH 
comment=\'test cf\'' % (name, key_type, additional_columns, primary_key)
+        else:
+            query = 'CREATE COLUMNFAMILY %s (key %s PRIMARY KEY%s) WITH 
comment=\'test cf\'' % (name, key_type, additional_columns)
 
     if compaction_fragment is not None:
         query = '%s AND %s' % (query, compaction_fragment)
 
+    if clustering:
+        query = '%s AND CLUSTERING ORDER BY (%s)' % (query, clustering)
+
     if compression is not None:
         query = '%s AND compression = { \'sstable_compression\': 
\'%sCompressor\' }' % (query, compression)
     else:
@@ -333,6 +341,7 @@ def create_cf(session, name, key_type="varchar", 
speculative_retry=None, read_re
     #Going to ignore OperationTimedOut from create CF, so need to validate it 
was indeed created
     session.execute('SELECT * FROM %s LIMIT 1' % name);
 
+
 def create_cf_simple(session, name, query):
     try:
         retry_till_success(session.execute, query=query, timeout=120, 
bypassed_exception=cassandra.OperationTimedOut)
@@ -342,6 +351,7 @@ def create_cf_simple(session, name, query):
     #Going to ignore OperationTimedOut from create CF, so need to validate it 
was indeed created
     session.execute('SELECT * FROM %s LIMIT 1' % name)
 
+
 def create_ks(session, name, rf):
     query = 'CREATE KEYSPACE %s WITH replication={%s}'
     if isinstance(rf, int):
diff --git a/sstable_generation_loading_test.py 
b/sstable_generation_loading_test.py
index 901011d..119f078 100644
--- a/sstable_generation_loading_test.py
+++ b/sstable_generation_loading_test.py
@@ -43,6 +43,14 @@ class TestBaseSStableLoader(Tester):
         if self.__class__.__name__ != 'TestBasedSSTableLoader' and 
self.upgrade_from is None:
             pytest.skip("Don't need to run base class test, only derived 
classes")
 
+    def create_schema_40(self, session, ks, compression):
+        create_ks(session, ks, rf=2)
+        create_cf(session, "standard1", compression=compression, 
compact_storage=self.compact())
+        create_cf(session, "counter1", key_type='text', 
compression=compression, columns={'column1': 'text',
+                                                                               
     'v': 'counter static',
+                                                                               
     'value': 'counter'},
+                  primary_key="key, column1", clustering='column1 ASC', 
compact_storage=self.compact())
+
     def test_sstableloader_compression_none_to_none(self):
         self.skip_base_class_test()
         self.load_sstable_with_configuration(None, None)
@@ -195,7 +203,11 @@ class TestBaseSStableLoader(Tester):
 
         logger.debug("re-creating the keyspace and column families.")
         session = self.cql_connection(node1)
-        self.create_schema(session, ks, post_compression)
+
+        if self.test_compact and default_install_version >= MAJOR_VERSION_4:
+            self.create_schema_40(session, ks, post_compression)
+        else:
+            self.create_schema(session, ks, post_compression)
         time.sleep(2)
 
         logger.debug("Calling sstableloader")
@@ -206,7 +218,7 @@ class TestBaseSStableLoader(Tester):
             for i in range(NUM_KEYS):
                 query = "SELECT * FROM standard1 WHERE KEY='{}'".format(i)
                 assert_one(session, query, [str(i), 'col', str(i)])
-                query = "SELECT * FROM counter1 WHERE KEY='{}'".format(i)
+                query = "SELECT key, v FROM counter1 WHERE KEY='{}'".format(i)
                 assert_one(session, query, [str(i), 1])
 
         logger.debug("Reading data back")
diff --git a/upgrade_tests/storage_engine_upgrade_test.py 
b/upgrade_tests/storage_engine_upgrade_test.py
index c1fc228..88abb97 100644
--- a/upgrade_tests/storage_engine_upgrade_test.py
+++ b/upgrade_tests/storage_engine_upgrade_test.py
@@ -516,7 +516,6 @@ class TestLoadMdSStables(TestBaseSStableLoader):
 
 
 @pytest.mark.upgrade_test
[email protected]("4.0 sstableloader can't handle formerly compact tables even 
after drop compact storage, rebuild, cleanup")
 @since('4.0', max_version='4.99')
 class TestLoadMdCompactSStables(TestBaseSStableLoader):
     upgrade_from = '3.0.17'
@@ -530,7 +529,6 @@ class TestLoadMdThreeOneOneSStables(TestBaseSStableLoader):
 
 
 @pytest.mark.upgrade_test
[email protected]("4.0 sstableloader can't handle formerly compact tables even 
after drop compact storage, rebuild, cleanup")
 @since('4.0', max_version='4.99')
 class TestLoadMdThreeOneOneCompactSStables(TestBaseSStableLoader):
     upgrade_from = '3.11.3'


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to